使用 SQL Developer 开发和调试 PL/SQL

本文介绍如何使用SQLDeveloper创建、编译及调试PL/SQL过程。涵盖建立数据库连接、浏览数据库对象、创建PL/SQL过程、运行及调试等关键步骤。

使用 SQL Developer 开发和调试 PL/SQL

目的

本教程向您介绍如何使用 SQL Developer 创建、运行以及调试 PL/SQL 过程。

所需时间

大约 30 分钟

主题

本教程包括下列主题:

 概述
 前提条件
 创建数据库连接
 浏览数据库

创建并编译 PL/SQL 过程

 运行 PL/SQL 过程
 调试 PL/SQL 过程
 总结
查看屏幕截图

 将鼠标置于此图标上以加载和查看本教程的所有屏幕截图。(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)

注意:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。

概述

Oracle SQL Developer 是一个新的免费图形工具,可提高工作效率并简化数据库开发任务。利用 Oracle SQL Developer,您可以浏览数据库对象、运行 SQL 语句和 SQL 脚本,以及编辑和调试 PL/SQL 语句。还可以运行所提供的任何数量的报表以及创建和保存您自己的报表。

现已提供适用于 Windows、Linux 和 Mac OS X 的第一个产品版本 Oracle SQL Developer 1.0 的下载。Oracle SQL Developer 可以连接到任何 Oracle 数据库 9.2.0.1 版以及更高版本。

体系结构

Oracle SQL Developer 是用 Java 开发的,利用了 Oracle JDeveloper IDE 框架。默认情况下是通过 JDBC Thin 驱动程序(不需要 Oracle Home)连接到数据库的;此外,还支持 JDBC Type 2 驱动程序(OCI 客户端驱动程序)。JRE 1.5 捆绑了一个单独的分发,另外还提供了支持 Windows 客户端所需的 tools.jar。非 Windows 客户端只需要 JDK 1.5。只需解压缩下载文件即可执行安装程序。Oracle 支持 Windows、Linux 和 Mac OS X 平台。

返回主题列表

前提条件

开始本教程之前,您应该:

1.

能够访问 Oracle 数据库 10g 实例或者完成了教程 在 Windows 上安装 Oracle 数据库 10g。 注意:您还可以连接到非 Windows 数据库来完成本教程。

2.

从 OTN 下载 Oracle SQL Developer 并将其解压缩到计算机上的任何目录。

3.

如果尚未进行此操作,DBA 用户需要解锁模式以提供访问。使用以下命令可以完成此操作:

                                 
ALTER USER hr UNLOCK ACCOUNT;
ALTER USER hr IDENTIFIED BY hr;
                              


4.

对于本教程的 PL/SQL 调试部分,HR 用户需要一些额外的权限。使用以下命令授予权限:

                                 
GRANT debug any procedure, debug connect session TO hr;
                              

返回主题列表

创建数据库连接

要创建数据库连接,请执行以下步骤:

1.

打开 Windows 资源管理器,双击 \sqldeveloper\sqldeveloper.exe

注意:您也可以在非 Windows 环境中执行 sqldeveloper。

2.

在 Connections 选项卡中,右键单击 Connections 并选择 New Database Connection

3.

在 Connection Name 域中输入 HR_ (或者标识您的连接的任何其他名称),在 Username 和 Password 域中输入 hr ,指定您的 作为 Hostname,在 SID 域中输入 。然后单击 Test

4.

连接状态已成功测试。但没有保存该连接。要保存该连接,请单击 Connect

5.

保存了该连接,您可以在列表中看到该数据库。展开

6.

打开连接时,自动打开 SQL Worksheet。SQL Worksheet 允许您针对您刚创建的连接执行 SQL。

返回主题列表

浏览数据库

SQL Developer 中的 Connections 导航器允许您浏览和编辑数据库对象。本教程创建并调试 PL/SQL,使用从 HR 模式中选择的表。在本主题中,您将了解本教程后面部分中将使用的表。执行以下步骤:

1.

展开 Tables 节点。

2.

单击 EMPLOYEES 表,查看表定义。

3.

要查看该数据,请单击 Data 选项卡。

4.

单击导航器中的 DEPARTMENTS 表。

5.

DEPARTMENTS 表有许多约束。当表定义显示时,选择 Constraints 选项卡。

6.

单击 Edit 图标。

7.

该对话框有多个选项卡,选择 Foreign Keys 选项卡。

查看外键。然后单击 OK

8.

通过在导航器中依次选中 JOBS 和 LOCATIONS 表并查看定义和数据,验证这两个表存在且具有数据。

返回主题列表

创建并编译 PL/SQL 过程

在本主题中,您创建、编辑并编译一个 PL/SQL 过程。执行以下步骤:

1.

在 Connections 导航器中,右键单击 Procedures 节点以调用上下文菜单,然后选择 Create PROCEDURE

2.

输入 EMP_LIST 作为过程名。然后单击 +,添加一个参数。

3.

双击参数,您可以将值更改为 pMaxRows,然后将 VARCHAR2 更改为 NUMBER。确保在单击 OK 之前按了 Enter 键。

4.

随即显示指定了参数的过程的框架。

5.

替换以下 PL/SQL:

                               
BEGIN
  NULL;
END;
                            

使用以下代码:

CURSOR emp_cursor IS
                              


  SELECT l.state_province, l.country_id, d.department_name, e.last_name,
                              


         j.job_title, e.salary, e.commission_pct
                              


  FROM locations l, departments d, employees e, jobs j
                              


  WHERE l.location_id = d.location_id
                              


  AND d.department_id = e.department_id
                              


  AND e.job_id = j.job_id;
                              


  emp_record emp_cursor%ROWTYPE;
                              


  TYPE emp_tab_type IS TABLE OF emp_cursor%ROWTYPE INDEX BY BINARY_INTEGER;
                              


  emp_tab emp_tab_type;
                              


i NUMBER := 1;
                              


BEGIN
                              


  OPEN emp_cursor;
                              


  FETCH emp_cursor INTO emp_record;
                              


  emp_tab(i) := emp_record;
                              


  WHILE ((emp_cursor%FOUND) AND (i <= pMaxRows) LOOP
                              


     i := i + 1;
                              


     FETCH emp_cursor INTO emp_record;
                              


     emp_tab(i) := emp_record;
                              


  END LOOP;
                              


  CLOSE emp_cursor;
                              


  FOR j IN REVERSE 1..i LOOP
                              


     DBMS_OUTPUT.PUT_LINE(emp_tab(j).last_name);
                              


  END LOOP;
                              


END;
                            

注意 SQL Developer 是如何自动设置代码的格式的。单击工具栏中的 Save  按钮,编译 PL/SQL 子程序。

6.

在导航器中展开 Procedures

7.

注意,当 SQL Developer 检测到无效 PL/SQL 子程序时,系统导航器中该子程序的图标上用红色的 X 来指示状态。

Log 窗口中显示编译错误。只需双击错误,即可导航到错误中报告的对应行。SQL Developer 还在右侧边列 (gutter) 中显示错误和提示。如果您将鼠标放在边列中每个红色方块上,将显示错误消息。

在本例中,错误消息指示 LOOP 语句中存在格式错误。仔细检查代码后,您会发现 WHILE 语句中多了一个圆括号。删除多余的圆括号。

8.

单击 Compile 图标。

9.

该过程成功编译。您现在可以运行该过程。

返回主题列表

运行 PL/SQL 过程

创建并编译了一个 PL/SQL 过程之后,您可以使用 SQL Developer 运行它。执行以下步骤:

1.

在左侧导航器中,右键单击 EMP_LIST 并选择 Run

2.

该操作将调用 Run PL/SQL 对话框。Run PL/SQL 对话框允许您选择要运行的目标过程或函数(对程序包有用),并显示所选目标的参数列表。PL/SQL 块文本区域中包含的是 SQL Developer 用来调用所选程序的生成代码。您可以使用该区域填充要传送到程序单元的参数以及处理复杂的返回类型。

将 PMAXROWS := NULL; 更改为 PMAXROWS := 5; 然后,单击 OK

3 .

Log 窗口中显示了返回的 5 行结果。

返回主题列表

调试 PL/SQL 过程

SQL Developer 还支持使用 Oracle 数据库进行 PL/SQL 调试。在本主题中,您调试一个 PL/SQL 过程、单步调试代码并在运行时修改值。执行以下步骤:

1.

通过在 OPEN emp_cursor; 语句所在行对应的代码左侧区中单击,可在 EMP_LIST 过程中设置一个断点。

2.

单击 Debug 图标(瓢虫)。

3.

Debug PL/SQL 对话框应仍显示值 PMAXROWS = 5; 单击 OK

4.

调试器应在您设置断点处暂停。您现在可以控制执行流程、修改变量值以及执行其他调试函数。

注意:如果您此时收到错误消息“This session requires DEBUG CONNECT SESSION and DEBUG ANY PROCEDURE user privileges”,您需要完成 前提条件中的步骤 4。

5.

单击 Step Into

6.

这将转至光标所在的第一行。再次单击 Step Into

7.

您现在应该选择光标所在的第一行。第 3 次单击 Step Into

8.

Smart Data 窗口开始显示有限的变量列表,这些变量用在要执行的代码行中以及之前执行的代码中。

9.

右键单击 DBMS_OUTPUT.PUT_LINE(emp_tab(j).last_name); 这行,然后选择 Run to Cursor

10.

展开 emp_tab > values > [1] > _key。您会看到表中给定记录中域的值。选择 LAST_NAME 域。

11.

右键单击 LAST_NAME 域并选择 Modify Value

12.

将名称更改为别的内容,单击 OK

13.

单击 Resume 图标  以允许 PL/SQL 运行直至完成。

14.

查看修改后的值是否显示在 Log 窗口中。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值