Page 1

PL/SQL Developer 6.0
用户指南
2004 年 6 月
Page 2
Page 3

PL/SQL Developer 6.0 用户指南 3
目录
目录 3
1. 介绍................................................................................................................................8
2. 安装..............................................................................................................................12
2.1 系统需求 ...................................................... 12
2.2 工作站安装 .................................................... 12
2.3 基于服务器安装 ................................................ 12
2.4 脚本安装 ...................................................... 13
2.5 卸载 PL/SQL DEVELOPER ........................................... 13
3. 编写程序......................................................................................................................14
3.1 创建程序 ...................................................... 14
3.2 保存程序 ...................................................... 15
3.3 修改程序 ...................................................... 16
3.4 编译程序 ...................................................... 16
4. 测试程序......................................................................................................................18
4.1 创建测试脚本 .................................................. 18
4.2 运行测试脚本 .................................................. 19
4.3 变量类型 ...................................................... 20
4.4 保存测试脚本 .................................................. 21
4.5 跟踪运行时间错误 .............................................. 22
4.6 包声明和 JAVA 会话声明 ......................................... 22
4.7 查看结果集 .................................................... 23
4.8 查看 DBMS_OUTPUT................................................. 23
4.9 查看 HTP 输出.................................................. 23
4.10 调试 .......................................................... 23
4.11 跟踪运行 ...................................................... 27
5. 优化..............................................................................................................................29
5.1 使用解释计划窗口 .............................................. 29
5.2 自动统计 ...................................................... 30
5.3 PL/SQL 概览图................................................... 31
5.4 SQL 跟踪........................................................ 32
6. 专用 SQL...................................................................................................................... 34
6.1 使用 SQL 窗口.................................................. 34
6.2 结果表格处理 .................................................. 35
6.3 实例模式查询 .................................................. 39
6.4 连接查询 ...................................................... 40
6.5 置换变量 ...................................................... 41
6.6 更新数据库 .................................................... 42
6.7 查看和编辑 XMLTYPE 列.......................................... 43
Page 4

4 PL/SQL Developer 6.0 用户指南
6.8 直接查询导出 .................................................. 43
6.9 保存 SQL 脚本.................................................. 43
6.10 创建标准查询 .................................................. 44
7. 命令窗口.......................................................................................................................45
7.1 输入 SQL 语句和命令............................................ 45
7.2 开发命令文件 .................................................. 46
7.3 支持命令 ...................................................... 47
8. 创建与修改非 PL/SQL 对象...........................................................................................50
8.1 表定义编辑器 .................................................. 50
8.2 序列定义编辑器 ................................................ 62
8.3 同义词定义编辑器 .............................................. 62
8.4 库定义编辑器 .................................................. 63
8.5 目录定义编辑器 ................................................ 63
8.6 作业定义编辑器 ................................................ 64
8.7 队列定义编辑器 ................................................ 64
8.8 队列表定义编辑器 .............................................. 65
8.9 用户定义编辑器 ................................................ 66
8.10 角色定义编辑器 ................................................ 69
8.11 概要文件定义编辑器 ............................................ 70
8.12 数据库连接定义编辑器 .......................................... 70
9. 报告..............................................................................................................................71
9.1 标准报告 ...................................................... 71
9.2 定制报告 ...................................................... 72
9.3 变量 .......................................................... 73
9.4 精制版面 ...................................................... 77
9.5 风格库 ........................................................ 84
9.6 选项 .......................................................... 84
9.7 报告菜单 ...................................................... 86
10. 工程..............................................................................................................................87
10.1 创建一个新工程 ................................................ 87
10.2 保存工程 ...................................................... 88
10.3 添加源文件到工程 .............................................. 88
10.4 添加数据库对象到工程 .......................................... 88
10.5 用工程项目工作 ................................................ 89
10.6 编译工程 ...................................................... 89
11. 任务项目.......................................................................................................................91
11.1 创建任务项目 .................................................. 92
11.2 编辑任务项目 .................................................. 92
11.3 关闭任务项目 .................................................. 93
11.4 删除任务项目 .................................................. 93
Page 5

PL/SQL Developer 6.0 用户指南 5
12. 窗口、数据库会话和事务.............................................................................................94
12.1 会话模式 ...................................................... 94
12.2 运行于多路会话或双路会话模式 .................................. 94
13. 浏览对象......................................................................................................................95
13.1 使用浏览器 .................................................... 95
13.2 浏览器过滤器 ................................................. 100
13.3 浏览器文件夹 ................................................. 101
14. 首选项.........................................................................................................................104
14.1 ORACLE – 连接................................................. 105
14.2 ORACLE – 选项................................................. 106
14.3 ORACLE – 调试器............................................... 107
14.4 ORACLE – 输出................................................. 108
14.5 ORACLE – 跟踪................................................. 109
14.6 ORACLE – 概览图............................................... 109
14.7 ORACLE – 登录历史............................................. 111
14.8 用户界面 – 选项.............................................. 113
14.9 用户界面 – 工具栏............................................ 115
14.10 用户界面 – 浏览器............................................ 116
14.11 用户界面 – 编辑器............................................ 117
14.12 用户界面 – 字体.............................................. 119
14.13 用户界面 – 代码助手.......................................... 120
14.14 用户界面 – 键配置............................................ 121
14.15 用户界面 – 外观.............................................. 122
14.16 用户界面 – 日期/时间......................................... 123
14.17 窗口类型 – 程序窗口.......................................... 124
14.18 窗口类型 – SQL 窗口.......................................... 126
14.19 窗口类型 – 测试窗口.......................................... 128
14.20 窗口类型 – 计划窗口.......................................... 128
14.21 工具 – 差异.................................................. 128
14.22 工具 – 数据生成器............................................ 129
14.23 工具 – 任务列表.............................................. 130
14.24 工具 – 重新调用声明.......................................... 130
14.25 文件 – 目录.................................................. 131
14.26 文件 – 扩展名................................................ 132
14.27 文件 – 备份.................................................. 133
14.28 文件 – HTML/XML.............................................. 134
14.29 其它 – 打印.................................................. 135
14.30 其它 – 更新与消息............................................ 136
14.31 首选项集 ..................................................... 137
15. 工具.............................................................................................................................139
15.1 浏览器 ....................................................... 139
Page 6

6 PL/SQL Developer 6.0 用户指南
15.2 查找数据库对象 ............................................... 140
15.3 编译无效对象 ................................................. 141
15.4 导出表 ....................................................... 142
15.5 导入表 ....................................................... 145
15.6 导出用户对象 ................................................. 147
15.7 文本导入器 ................................................... 148
15.8 数据生成器 ................................................... 151
15.9 比较用户对象 ................................................. 155
15.10 事件监视器 ................................................... 157
15.11 会话 ......................................................... 158
15.12 自定义工具 ................................................... 159
16. 编辑器......................................................................................................................... 165
16.1 选择功能 ..................................................... 165
16.2 列选择 ....................................................... 165
16.3 指引线 ....................................................... 166
16.4 代码助手 ..................................................... 166
16.5 重新调用语句 ................................................. 167
16.6 专用复制 ..................................................... 168
16.7 前后关系敏感帮助 ............................................. 169
16.8 数据库对象弹出式菜单 ......................................... 169
16.9 解释计划 ..................................................... 169
16.10 宏 ........................................................... 169
16.11 代码目录 ..................................................... 171
16.12 代码层次 ..................................................... 172
16.13 超链接导航 ................................................... 172
16.14 浏览按钮 ..................................................... 173
17. 大数据编辑器.............................................................................................................. 174
17.1 编辑纯文本 ................................................... 175
17.2 编辑 RTF...................................................... 175
17.3 编辑 XML...................................................... 176
17.4 编辑图象 ..................................................... 177
17.5 编辑十六进制数据 ............................................. 177
17.6 调用外部查看器或编辑器 ....................................... 179
18. 查询设计器.................................................................................................................. 181
18.1 创建新的 SELECT 语句 ........................................... 181
18.2 修改现有的 SELECT 语句 .........................................184
18.3 处理查询定义 ................................................. 184
18.4 查询设计器首选项 ............................................. 185
19. PL/SQL 美化器 ............................................................................................................187
19.1 定义选项 ..................................................... 187
Page 7

PL/SQL Developer 6.0 用户指南 7
19.2 定义规则 ..................................................... 188
19.3 使用美化器 ................................................... 189
20. 模板.............................................................................................................................190
20.1 模板窗口 ..................................................... 190
20.2 使用模板 ..................................................... 191
20.3 创建和修改模板 ............................................... 192
21. 窗口列表.....................................................................................................................197
22. 授权.............................................................................................................................198
22.1 允许授权 ..................................................... 198
22.2 定义授权 ..................................................... 199
22.3 禁止授权 ..................................................... 200
23. 帮助系统.....................................................................................................................201
23.1 MS 帮助文件 .................................................. 201
23.2 HTML 手册 .................................................... 201
24. 定制.............................................................................................................................205
24.1 首选项 ....................................................... 205
24.2 窗口版面 ..................................................... 205
24.3 在线文档 ..................................................... 205
24.4 命令行参数 ................................................... 207
24.5 SQL、PL/SQL、命令、JAVA 和 XML 关键词 ......................... 209
24.6 插件 ......................................................... 209
Page 8

8 PL/SQL Developer 6.0 用户指南
1. 介绍
PL/SQL Developer 是一个为 Oracle 数据库开发存储程序单元的集成开发环境(IDE),
使用 PL/SQL Developer 你能方便地创建你的客户/服务器应用程序的服务器部分。
到目前为止从最差处想,你还可以完成如下工作:
• 使用文本编辑器写程序单元(过程、触发器等等)。
• 使用 Oracle SQL*Plus 编译源文件。
• 如果有编译错误,你必须找出它位于源文件何处,纠正它,转回到 SQL*Plus 重
新编译它,然后再找下一处错误。
• 使用 SQL*Plus 或你的客户端应用程序测试程序单元。
• 如果发生运行时间错误,你又要很辛苦地定位问题的原因并纠正错误。
• 使用解释计划工具或 tkprof 工具优化你的 SQL 语句。
• 使用 SQL*Plus 或另外的工具在你的数据库里查看或修改其它对象和数据。
这些任务 - 编辑、编译、纠正、测试、调试、优化和查询 - 在不离开 PL/SQL
Developer IDE 的情况下都能被完成。此外,PL/SQL Developer 还提供了其它几个
Page 9

PL/SQL Developer 6.0 用户指南 9
在每天的 PL/SQL 开发期间能有帮助的工具。
编辑
与其它严肃的开发环境一样, PL/SQL Developer 也可以在磁盘上存储你的源文件,
其它工具只让你在数据库里编辑源文件,而这不允许进行任何版本控制或部署方案。
源文件能通过 SQL*Plus 运行,所以你不使用 PL/SQL Developer 也能在任何平台上
部署它们。你可以通过标准的多文档界面马上就能编辑很多文件。
编辑器为程序员提供了很广的协助范围。对于 SQL 语句和 PL/SQL 语句,它有语句
前后关系的帮助,我们都已经提供在那儿了:你开始键入 substr, 但已经忘了参数
的准确含义,现在你可以简单地单击 F1 就能获得 SQL 参考手册的相应主题。同样
地,在编辑器里面卷起的窗口里,表、视图和程序单元都能为你提供描述。代码助手
被集成在编辑器里面,当你键入数据库对象的名称时,它会自动地显示出数据库对象
的信息,允许你从这些信息里浏览和挑选选项。对于大的包或类型体,程序编辑器为
每一个导航都提供了带有代码内容的树形视图,提供了前后浏览按钮,提供了超连接
导航。查询设计器允许你图形化地创建 select 语句。 PL/SQL Developer 的可扩展
模板使你往你的程序里插入标准的 SQL 和 PL/SQL 代码变得很容易。所有编辑器都
使用恰当的 SQL,PL/SQL 和 SQL*Plus 的语法高亮使你的代码更具有可读性。
Page 10

10 PL/SQL Developer 6.0 用户指南
编译与纠错
在编辑器里,你可以编译源文件。如果发生编译错误,你会自动地被带到相应的源代
码行,所有编译错误都被记录在编辑器底部的一个列表里。
由于你可以编译源文件而不用保存它,你就能安全地探索解决问题的很多可选方法。
编辑器保留着你已经修改了文件而没有保存或编译它的踪迹。
测试与调试
要测试你的程序单元,你可以写一个程序脚本,这个测试脚本的主体包含了你可以规
划测试代码的 PL/SQL 块,任何你要在 PL/SQL 块里使用的变量都能被声明、被赋输
入值,还能在运行后被查看。
当你运行一个测试脚本,也许会出现运行时间错误。在这种情况下, PL/SQL
Developer 允许你查看错误堆栈的源,每一个涉及运行时间错误的错误堆栈源行都会
被高亮显示,所以你能很容易地返回到有问题的地方。
如果你正在使用 7.3.4 或更高版本的 Oracle,你就可以使用 PL/SQL Developer 的
集成调试器。你可以一步一步地通过代码、设置断点、查看/设置变量、查看调用堆
栈等等。
在 Oracle8i 以及更高版本上,你还可以使用 dbms_trace 特性把程序运行的已选事
件记入日志,这能帮助你分析程序流和异常。
来自于调用到 dbms_output 和 PL/SQL Web 工具箱的输出会自动地在相应的测试窗
口标签页里被显示出来。
优化
要在你的程序单元里优化 SQL 语句, Oracle 的解释计划工具能是一个好帮手,所
以它集成在 PL/SQL Developer 的 IDE 里面。在源文件里简单地选择 SQL 语句并按
F5,查询计划就会真实地出现在一个单独的解释计划窗口里,然后你就能在源文件之
外通过修改语句来优化查询计划,再把它复制回去。
对于已运行的 SQL 语句和 PL/SQL 程序单元,你还能查看统计表,这些统计表能包
括耗时、CPU 时间、逻辑读、物理读、物理写等等的内容。
Oracle8i 引进了 PL/SQL 概览图,它允许你概览你的 PL/SQL 代码。对于每个已运
行的 PL/SQL 代码行,你能测定运行时间以及已经运行了多少次。
查询
要查询数据库里的数据,你可以使用 SQL 窗口运行任何 SQL 语句。所有已运行的语
句都被保留在历史缓冲区里,这样你能容易地重新运行它们。任何查询结果都会被方
便地显示在一个单独的表格里,随后你可以在这个表格里插入、更新或删除记录。结
果表格还能被用于查询实例模式,以便你能容易地查找你需要的信息。
要查询数据库对象,你可以使用对象浏览器。数据库对象的所有相关属性,例如表、
视图、序列、函数、过程、包、类型、触发器等,包括对象之间的依赖关系,都能被
Page 11

PL/SQL Developer 6.0 用户指南 11
显示出来。浏览器使用了树形视图,这类似于容易地使用以指向并点击方式浏览的
Windows 的资源管理器。
运行 SQL 脚本
PL/SQL Developer 包括了一个能被用于运行 SQL 脚本或运行 SQL 语句的命令窗口,
你还可以运行你可能熟悉的与 SQL*Plus 命令很相似的命令。
创建与修改表定义
你可以容易地创建与修改带有使用任何 SQL 语句的表定义,正好填入到对话窗口里
的定义里面,以修改列、约束、索引、权限、存储信息、注释等等。你可以在数据库
里应用这些定义,并且查看、修改和保存因而产生的 SQL 。
报告
PL/SQL Developer 伴生了许多基于 HTML 格式的标准报告。你可以在 PL/SQL
Developer 里面查看这些报告,可以打印它们或者另存它们为 HTML 文件,你还可以
创建你自己定制的报告,报告能从报告菜单里简便易行地制成。
工程
要组织你的工作,你可以使用 PL/SQL Developer 的工程概念,工程由很多文件和数
据库对象组成,这些对象通过工程项目窗口很容易被建成,并且通过单击鼠标就能被
编译。
工具
PL/SQL Developer 提供了几个能对开发有帮助的工具,这些工具包括允许你在数据
库对象源里搜索文本的查找数据库对象工具、快速编译在开发期间已经变得无效的对
象的编译无效对象工具、导出和导入工具、创建测试数据的数据生成器工具、导出用
户对象 DDL 语句的导出用户对象工具、比较两个用户对象定义的比较用户对象工具、
会话信息工具、事件监视器。
除了这些标准工具之外,你还可以定义你自己的工具,并把他们包括在 PL/SQL
Developer 的工具菜单里面。
Page 12

12 PL/SQL Developer 6.0 用户指南
2. 安装
主要有两种方法安装 PL/SQL Developer:
• 工作站安装:在这种情况下你要在每个被使用的工作站本地安装这个软件。
• 服务器安装:在这种情况下你要在服务器上从每个被使用的工作站能访问到的地
方安装这个软件。
两种安装方法在这里都将被解释。
2.1 系统需求
PL/SQL Developer 是 32 位的 Windows 应用程序,因此你的工作站上必须至少安装
了 Windows 95 或 Windows NT 4。要连接到 Oracle 数据库,PL/SQL Developer 需
要 32 位版本的 SQL*Net、 Net 8、 Net 9 或 Net 10。
2.2 工作站安装
要在本地工作站上安装 PL/SQL Developer,运行来自于安装媒体的 setup 程序,然
后下面的对话框将会显示出来:
你可以为程序文件选择一个目的目录、一个开始菜单的文件夹、一个 PL/SQL
Developer 在桌面上的快捷方式的位置以及安装选项,然后按页末的完成按钮,这样
程序文件就会被复制,快捷方式也会被创建。
2.3 基于服务器安装
对于多用户许可,你可以在文件服务器上创建一个单一的 PL/SQL Developer 安装,
并且对所有许可用户都提供访问权限。做到了这一点,与前一节描述的方法一样,你
就可以运行服务器上的 setup 程序了。你必须选择使用这个软件的用户的共享目的
目录。当 PL/SQL Developer 第一次在工作站上运行时,这种安装方式会被自动地检
测到,然后不用用户干预本地安装就会完成。
PL/SQL Developer 能被安装到用户只读访问的目录里,不过有点例外情况:
• 宏子目录必须可写,因为所有的宏都要储存到这里。
Page 13

PL/SQL Developer 6.0 用户指南 13
• 首选项子目录必须可写,因为个人首选项集将被储存到这里。请看第 14.31 章
的详细资料。
2.4 脚本安装
除了上面描述的安装过程之外,你还可以创建无人值守安装的脚本,请阅读包含在
install.txt 里面的详细信息。
2.5 卸载 PL/SQL Developer
若因为某些原因你希望卸载 PL/SQL Developer,你可以使用控制面版里的添加/移除
程序来移除它。
Page 14

14 PL/SQL Developer 6.0 用户指南
3. 编写程序
在 Oracle 数据库里面,你能识别出五种不同类型的存储程序单元:函数、过程、包、
类型和触发器,程序编辑器允许你用同一个方法创建和修改这五种类型的程序单元。
3.1 创建程序
要创建一个新程序,请按工具栏里的新建按钮,选择程序窗口项目,例如函数子项目,
你现在会得到与这个程序类型相关的不同变量的提示,这样我们就知道在哪里创建函
数、函数名、参数列表以及它的返回值类型:
与这个对话框的标题所暗示的一样,这个信息来自于模板。PL/SQL Developer 提供
了几个标准的能按照你的需要修改的模板,你也可以定义新的模板,关于定义模板的
信息被提供在第 20 章里。
你输入完了变量并按了确定按钮以后,程序编辑器窗口出现了,里面有模板函数。每
个你在程序编辑器里创建的程序单元都一定以常见的 SQL 语法 'create or
replace' 开始,这样我们就创建了一个函数 'even',源文件如此图所见:
在编辑器的左边,你可以看到显示程序单元结构的代码目录,这被用于诸如包体和类
型体等这样大的程序单元的导航,这个特性在第 16.11 章里有详细的描述。
Page 15

PL/SQL Developer 6.0 用户指南 15
在编辑器的上方,你可以看到显示来自于光标位置的层次的代码层次,这样你可以定
位在函数里语句的序列里的语句位置(返回语句)。对于复杂程序,准确地看到你定
位于何处是很有用的,这能帮助你选择 PL/SQL 代码的某一部分。详细的描述在第
16.12 章里。
程序文件能包含不止一个程序单元。在程序编辑器里右击鼠标,一个允许你添加或删
除程序单元的弹出式菜单就显示出来了。你可以通过选择窗口上方适当的跳格键在程
序单元之间互相切换,这个方法能使你方便地保持相关的程序单元都在一个源文件里,
包说明与体就是这个特性的一个很好的例子。
程序单元应该放在可能与之相参照的程序文件里的其它任何程序单元的后面。如果你
创建了一个与前面创建的函数 'even' 相参照的函数 'odd',则程序编辑器应该是这
样的:
3.2 保存程序
你可以通过按工具栏里的保存按钮来保存程序文件,一个显示一些程序文件标准扩展
名的保存对话框就会显示出来了:
程序类型 扩展名
函数 .fnc
过程 .prc
包说明与体 .pck
包说明 .spc
包体 .bdy
类型说明与体 .typ
类型说明 .tps
类型体 .tpb
触发器 .trg
Page 16

16 PL/SQL Developer 6.0 用户指南
Java 源 .jsp
你可以通过如第 14.26 章所描述的首选项来改变这些扩展名。如果只有一个单一的
函数、过程、包、类型、触发器或 java 源在程序文件里,则文件名会自动地从这个
程序单元的名称和类型得来。文件保存以后,文件名就在窗口标题里显示出来。
已保存的程序文件有一个与 Oracle SQL*Plus 完全一致的格式,包含 'odd' 与
'even' 函数的源文件格式如下:
create or replace function Even(Value in integer) return boolean is
Result boolean;
begin
Result := (Value mod 2 = 0);
return(Result);
end Even;
/
create or replace function Odd(Value in integer) return boolean is
Result boolean;
begin
Result := not Even(Value);
return(Result);
end Odd;
/
当这个文件通过 SQL*Plus 被运行的时候,两个函数都会被创建。
3.3 修改程序
通过按工具栏上的打开按钮并且选择程序文件项目,你可以打开以前保存的程序文件。
如果文件在最近用过,通过选择文件菜单上的重新打开或者点击工具栏中打开按钮旁
边的箭头,你也可以打开它。当你开始编辑时,窗口底部有一个蓝色的指示器就亮起
来了,这意味着文件已经被修改,但还没有被保存。还有一个黄色指示器,它意味着
文件已经被修改,但还没有被编译。
3.4 编译程序
通过按工具栏中执行按钮,你可以编译程序文件。程序文件里的所有程序单元都会被
编译,从第一个开始编译,不管你当前选了哪个程序单元。当错误出现时,编译被终
止,编辑器被定位在引起错误的源行:
Page 17

PL/SQL Developer 6.0 用户指南 17
如果有不只一个错误并且你希望纠正它们,你点击程序编辑器底部的下一个错误信息
就可以转到有错误的地方。如果你已经为 PL/SQL Developer 配置了如第 23.2 章里
所描述的 HTML 手册,你在编译错误上双击就可以显示出 Oracle 错误信息手册里的
相关段落。
编译错误列表也能包含提示。提示的内容不是引起编译失败的原因,但它们可能显示
出能引起运行时间错误的问题(例如与 null 比较、函数没有返回值、无用参数等
等)。关于提示的更多信息,请看第 14.17 章。
如果在编译后有错误信息显示在信息框里,这说明创建语句失败,事实上源文件没有
被编译,错误信息应该能解释错误的原因。例如,如果你得到的信息是 'create or
replace' 语法错误,信息框里会显示"ORA-00900:无效的 SQL 语句"。
注:如果你使用的 Oracle 服务器是 7.2 或更早版本,触发器编译错误总是被报告
在信息框里。Oracle 服务器自从 7.3 版本以后,触发器编译错误采用与过程、函数、
包、类型一样的方式被报告。
Page 18

18 PL/SQL Developer 6.0 用户指南
4. 测试程序
成功地编译了程序以后,你还需要测试它。要达到这一目的,你可以使用 PL/SQL
Developer 的测试脚本。测试脚本允许你运行一个或多个程序单元,允许你定义输入、
输出和输入/输出变量,允许你查看变量和给变量赋值。如果在测试脚本的运行期间
出现运行时间错误,你可以查看涉及错误的程序单元的源。
如果你使用的是 Oracle 7.3.4 或以后版本,你可以使用 PL/SQL Developer 的集成
调试器。你能一步一步地运行你的代码,设置断点,查看和设置变量,查看调用堆栈,
等等。
4.1 创建测试脚本
有两种方法创建测试脚本。你可以简单地右击浏览器里的一个程序单元(一个独立的
函数或过程、一个打包的函数或过程、或者一个对象类型方法),选择测试项目。这
将创建一个新的测试脚本,这个测试脚本带有参数变量和结果变量。为了说明问题,
我们将从头开始用手工创建一个测试脚本。
要创建空的测试脚本,请按工具栏里的新建按钮,选择测试窗口项目。你现在可以用
类似于 declare...begin...end 这样的语法在测试脚本的正文内键入一个 PL/SQL
块。作为一个例子,我们将测试包 employee,运行一些雇员/部门演示表的雇员函数。
函数 deptname 返回雇员部门的名字,并且能使用下列 PL/SQL 块来测试:
这个 PL/SQL 块包含了一个简单的我们要测试的函数的调用,它使用了变量
deptname 和 empno 。我们必须给 empno 赋一个值,然后运行,检查 deptname 的
值以确定函数是否返回了正确的值。
Page 19

PL/SQL Developer 6.0 用户指南 19
用冒号作为这些变量的前缀,这些变量能被声明于测试脚本窗口的底部:
变量列表左上方的扫描变量源按钮(Þ)能被用于快速复制源里的变量。在此之后,
整型数据类型和值 7369 (来自于调查部的 Smith 先生)就被赋给了 empno 。现在,
我们已经做好运行脚本的准备了。
你也可以在 PL/SQL 块本地的声明部分来声明变量,但是你将不能修改或者查看这些
变量的值。这些本地变量的优势是你能使用记录类型、 PL/SQL 表、类型等等。
4.2 运行测试脚本
要运行测试脚本,请按工具栏里的执行按钮。在运行完后,变量的值就被更新了,任
何改变了值的变量都会用黄色的背景被显示出来:
函数运行的结果是 'RESEARCH' (调查部的调查。——译者姜华东注),显然它的运
行是正确的。在窗口底部,运行时间被显示出来了,这个信息能被用于优化你的运行
代码。为了优化目的,你也可以通过选择统计表标签页来查看 PL/SQL 块运行情况的
统计表。通过在运行脚本前按创建概览图报告按钮,你还可以创建每个 PL/SQL 代码
已运行行的概览报告。在运行完后,你就可以转到概览图页来查看报告。统计表和概
览图分别在第 5.2 章和第 5.3 章里有详细解释。
Page 20

20 PL/SQL Developer 6.0 用户指南
你可以通过按中断按钮来终止一个正在运行的测试脚本,这在程序陷入死循环或者运
行时间长于预期的时候显得特别有用。要注意的是按中断按钮并不总是成功的。例
如,如果程序正在等待一个锁,它并不响应中断信号。
运行了一个脚本后,一个事务也许就已经被已运行的程序单元开始了。若是这样,工
具栏里的提交和回滚按钮将被激活。要了解关于事务的更多信息,请看第 12 章。
4.3 变量类型
测试窗口变量部分的类型列表包含了能被使用的所有类型,这些类型的特性将在这一
章里被解释。
类型 描述
Integer 能被用于数字值,范围为 -2^32 到 2^32 - 1。
Float 能被用于其它数字值。
String
Date 日期和时间的数据类型。
Long
Long Raw
Cursor
CLOB, BLOB
与 BFile
PL/SQL
String
Char 定长字符串(空格被填补)。
相当于表里的 varchar2 数据类型,能容纳 2000 (Oracle7) 或
4000 (Oracle8) 个字符。此数据类型的值的单元格里有一个能调用
文本编辑器的单元格按钮,所以你能容易地查看和修改多行字符
串。
Long 数据类型不在表格里显示它的值,只显示 <Long>,按单元格
按钮可以调出文本编辑器。
按 Long Raw 值的单元格按钮将调出一个导入/导出文件对话框,允
许你载入或保存这个变量的内容。
此数据类型用于 PL/SQL 里你能使用游标变量的地方。运行了测试
脚本后,你可以按值的单元格按钮以在 SQL 窗口里显示结果集。
在你能查看 LOB 数据以前,这些 LOB 定位变量必须在服务器上被
初始化。CLOB 将调用文本编辑器, BLOB 与 BFile 将调用导入/导
出文件对话框。
为 PL/SQL 使用此数据类型, varchar2 值可以达到 32000 个字
符。
Substitution 没有绑定变量的限制,置换变量就能被使用。在它被发送到服务器
以前,PL/SQL 块里的变量名会被它在文本里的值置换。
临时 CLOB
与 BLOB
在它们通过测试脚本被传送到服务器以前,这些 LOB 定位器已经可
以持有数据了。
Page 21

PL/SQL Developer 6.0 用户指南 21
m PL/SQL Developer Test Script
Boolean 变量
当你选择变量类型列表框,你会注意到缺少 Boolean 数据类型,这是因为 SQL*Net
不支持这种数据类型。要使用 Boolean 变量,你可以声明它为整型,并且使用
Oracle 提供的 sys.diutil.bool_to_int 与 sys.diutil.int_to_bool 函数。这些
函数能在 null/true/false 与 null/0/1 两者之间进行转换。如果你在浏览器里使
用测试函数,这个转换会为你自动地产生。
4.4 保存测试脚本
要保存测试脚本,请按保存工具栏里的保存按钮。保存对话框使用 .tst 为测试脚本
的默认扩展名,尽管你可以使用第 14.26 章里描述的首选项来改变默认扩展名。
PL/SQL 块、所有变量(名称、类型与值)以及调试监视器(请看第 4.10 章)都被
保存下来。由于保存了测试脚本,你以后若要修改它,就能容易地重新测试程序单元
了。
通过按工具栏里的打开按钮并选择测试脚本,你能打开以前保存的测试脚本,这将创
建一个新的测试窗口。作为一种选择,你可以右击先前创建的测试窗口,选择载入项
目,这将在现有的测试窗口里打开测试脚本。
保存为 SQL*Plus 脚本
作为一种选择,你可以用 SQL*Plus 兼容格式保存测试脚本,这允许你在不能用
PL/SQL Developer 的环境里运行脚本(例如在 Unix 服务器上)。要做到这一点,
请在文件选择器对话框里选择 SQL*Plus 脚本 (*.sql) 作为文件类型。来自前一章
的例子脚本就将被这样保存:
set feedback off
set autoprint off
rem Declare variables
variable result varchar2(2000)
variable p_empno number
rem Set variables
begin
:result := null;
:p_empno := 7369;
end;
/
rem Execute PL/SQL Block
begin
:result := employee.deptname(:p_empno);
end;
/
rem Print variables
print result
print p_empno
Page 22

22 PL/SQL Developer 6.0 用户指南
注意:你不能再把 SQL*Plus 脚本作为测试脚本打开。如果你要重新使用测试窗口,
你还是把它保存为测试脚本为好!
4.5 跟踪运行时间错误
无论何时你的程序单元引起了运行时间错误, PL/SQL Developer 都将问你是否希望
查看错误堆栈的源。这个方法能使你快速查找错误的原因。如果在我们的 deptname
函数里有一个错误,则错误堆栈窗口将显示如下:
在顶部你能看到每个与运行时间错误相关的程序单元的标签,程序单元按从右往左的
顺序被调用。你可以通过标签来浏览,能容易地找到导致错误的程序流。在这里它显
示出测试脚本已经调用了函数 employee.deptname 。这显然能获得更多复杂的、甚
至通过触发器的信息。
注:如果你使用的是 Oracle 服务器 7.2 或者更早版本,触发器源将不被显示在错
误堆栈窗口里。
错误堆栈高亮显示每一与错误相关的红色的行。对于堆栈里的最近的程序单元,这是
一个引起错误的行。对于所有其它的程序单元,这是一个调用下一个程序单元完成的
行。
4.6 包声明和 Java 会话声明
当你正在编辑、编译、测试包时,包声明在每一个编译后将被 Oracle 抛弃,所有包
里的全局变量都将被复位,并且初始化块将被再运行一次。这可能导致意外的结果。
无论 PL/SQL Developer 何时检测到这种情况,在测试窗口的状态行都会有一个警告
显示出来:“警告:ORA-04068:现有的包声明已经被抛弃”。
同样地,如果你编辑和编译了 Java 源,任何现有的 Java 会话都会被清除。PL/SQL
Developer 也将处理这种情况,将在状态行上显示:“警告:ORA-29549:类<类名>
已经被改变,Java 会话声明被清除了”。
Page 23

PL/SQL Developer 6.0 用户指南 23
4.7 查看结果集
在测试脚本里,你并不会仅被限制于 PL/SQL 块。你还可以运行单个 SQL 语句,包
括 select 语句。运行 select 语句将显示在另外的结果标签页里,这里可以显示所
有的已选行。
4.8 查看 dbms_output
为了调试目的,“打印”某些信息到来自于程序单元内部的屏幕上可能是必要的。要
达到这个目的 ,Oracle 创建了 dbms_output 包。通过调用 dbms_output.put_line,
信息就被放进了输出缓冲区。在运行了测试脚本后,你可以选择测试窗口顶部的输出
标签来查看输出缓冲区的内容。在此页上,你还可以设置输出缓冲区的大小或者允许
/禁止缓冲。输出页的默认设置被如第 14.4 章里所述的输出首选项所控制。
4.9 查看 HTP 输出
如果你要利用 PL/SQL Web 工具箱来测试程序单元,则 HTP Output 标签页将被显示
出来(如果有 HTP 输出的话):
如果没有 HTP 输出,这个标签页将是不可见的。
4.10 调试
对于那些设计错误,跟踪起来确实很辛苦,好在测试窗口提供了一个集成调试器。在
窗口的顶部,你会发现一个与调试器有相关功能的工具栏,要开始调试会话,只需要
按调试工具栏左边的开始按钮就可以,而不是按主工具栏里的执行按钮。现在,其它
按钮都被激活了,你可以准备调试了。
控制运行
调试器开始运行后,运行将暂停于测试脚本的第一个语句之前,你可以使用调试工具
栏里的按钮来控制运行:
Page 24

24 PL/SQL Developer 6.0 用户指南
运行脚本直到完成。
单步进入过程、函数或调用下一行的方法。如果下一行包含了能引起触发器工
作的更新、插入、或删除语句,你将单步进入这个触发器。
单步跳过下一行。它将被运行,但你将不会单步进入到源。
单步退出当前的程序单元。
运行到异常出现。运行将被暂停在引起异常的行。在下一步之后,事实上异常
将被解除。
无论你何时单步进入程序单元,它的源将自动地被载入到测试窗口。现在,编辑器面
板的底部将显示出每个程序单元的标签,因此你能容易地在它们之间互相切换,以查
看源、设置/移除断点等等。通过右击编辑器面板,你能从测试窗口移除程序单元
(如果你不再对它有兴趣的话):
查看与设置变量值
要在调试会话期间查看变量值,你可以简单地移动鼠标的指针越过源里的变量。半秒
以后,它的值将被弹出显示。测试脚本的 PL/SQL 块里的变量可以从来都不被显示。
复杂的变量(例如记录与对象类型)也不能被显示,尽管你可以查看单独的字段。未
来版本的 Oracle 也许会解除这些限制。
要设置变量值,在程序源里右击它的名字,在弹出式菜单里选择设置变量项目,一个
带有变量当前值的输入区就显示出来了,你可以输入一个新值并按回车来应用它,或
者按 ESC 取消操作:
Page 25

PL/SQL Developer 6.0 用户指南 25
在同样的弹出式菜单里,你还可以选择添加变量到监视列表,这个列表意味着在每个
调试步骤以后,变量值将被自动地显示和更新在测试窗口左面底部的监视列表里。
如果变量是一个标量数据类型的集合(PL/SQL 表、数组或嵌套表),你就可以通过
右击它并选择来自于弹出式菜单的查看集合变量来查看整个集合。
要注意如果程序单元被编译带有调试信息,变量值仅能被查看与设置。这是首选项的
存在造成的,它会使每一个编译都带有调试信息。你可以采用手工方式添加调试信
息:右击浏览器里的程序单元,选择来自于弹出式菜单上的添加调试信息项目。
使用断点
断点能被用于暂停程序在你的 PL/SQL 代码的某一行上的运行。当运行暂停时,你可
以查看和设置变量、一步一步地通过代码等等。你可以定义断点的条件,当这个条件
被满足时,运行将被暂停。对于每一个断点,你可以定义一个断点到达时放在输出页
的信息。
设置断点
有两种方法设置断点:在程序窗口或在测试窗口。对于这两种方法,你只需要简单地
点击编辑器左边适当的行的空白处就可以。断点标记将显示出来,这标志着断点已经
存在于那个行上了。当你在调试模式里运行测试窗口,如果有一个断点被遇到,运行
将停止。
如果你在程序窗口里设置断点,这可能是这个特殊的程序单元还仍然没有被编译到数
据库里,因此这种断点现在还仍然不能被应用到数据库里。在这种情况下,断点的标
志将有不同的显示。当你在后来编译程序单元的时候,断点将被应用,相应的标志将
改变到实际情况。只要程序单元不被编译,任何先前在这个程序单元里设置的断点都
会是有效的。
你不能在测试脚本的 PL/SQL 块里设置断点。
要删除断点,再一次点击断点标志就可以了。
断点条件
有时候即使你仅仅对某一环境下程序状态有兴趣,你还是需要在经常被运行的行上定
义断点。在这种情况下,你可以为断点定义一个条件,运行仅仅在条件满足的时候才
能暂停。
Page 26

26 PL/SQL Developer 6.0 用户指南
要为断点定义条件,请右击断点标志,选择来自于弹出式菜单的修改断点项目,下列
对话框就被显示出来:
在这个对话框里,你可以看到所有有断点的程序单元,断点被列在它们下面。每一个
断点都有一个能被用于允许或禁止它的检验栏,底部区域显示如下字段:
• 使用条件 – 这个检验栏允许或禁止使用条件,条件自己应该是布尔表达式。当
运行到达断点行时,只有条件值为 True 运行才被暂停。在条件里,你可以使用
任何 SQL 表达式,你还可以使用任何在断点位置已知的变量 。在交互调试期间,
这些是你能查看或设置的相同的变量。变量前面应该加冒号。例如,如果在断点
位置 ename 是个有效的变量,则 upper(:ename) = 'SMITH' 是一个有效的条件。
• 使用信息 – 这个检验栏允许或禁止使用信息。当运行到达断点行时,如果条件
得到满足,信息将被放到输出页上。
• 不中断 – 这个检验栏只在你还要定义一个信息时有用。当它为已检验时,运行
从不暂停在断点行上。 用此方法你可以定义仅仅在输出页上生成信息的断点。
• 使用通过计数 – 这个检验栏允许或禁止通过计数,这个通过计数定义断点行在
运行被暂停前必须被通过多少次。例如,如果你定义通过计数为 10,则运行在
断点行每到达 10 次就暂停一次。
查看调用堆栈
调用堆栈能被查看于测试窗口的右侧底部,它在每个调试步骤到达后能够自动更新。
调试器首选项
在工具菜单的首选项项目里,你会发现有与调试器相关的首选项。这些首选项被详细
描述在第 14.3 章里。
Page 27

PL/SQL Developer 6.0 用户指南 27
4.11 跟踪运行
如果你正在使用 Oracle8i 或更新版本,你可以使用测试窗口的跟踪工具去跟踪你的
PL/SQL 代码的运行情况。你可以设定你要跟踪的事件:调用、异常、SQL 或者甚至
每一个 PL/SQL 代码的可运行行。按选择跟踪级别按钮,下一步按创建跟踪报告按钮,
就可以看到下列配置屏幕:
你可以控制你是否要跟踪每一个程序单元的特定时间(所有)、仅仅在那些与调试信
息一起编译的程序单元(允许)或无(无)。
要创建跟踪报告,简单地按测试窗口工具栏里的创建跟踪报告按钮并且运行你的测试
脚本就可以。在运行完后,你可以转到跟踪标签页去查看报告,并且查看先前运行的
报告:
在这个(简单的)报告里,你可以看到函数 employee.deptname 的第 15 行的
select 语句出现了异常 1403 (没有找到数据),这个异常在同一程序单元的第 27
行被处理了。
Page 28

28 PL/SQL Developer 6.0 用户指南
对于每个跟踪时间,你可以包含一些信息在报告里,就像事件描述、时间、程序单元、
行数、异常等等。要配置这个,请按跟踪工具栏里左上方的首选项按钮,这将调来如
第 14.5 章里所描述的跟踪首选项页。
要查看旧的跟踪报告,就从运行选择列表选择先前的跟踪运行。按删除运行按钮可以
删除当前的已选的运行。
要在 Oracle 跟踪工具里获得更多信息,请看 Oracle 供应包参考手册里的
DBMS_TRACE 。
Page 29

PL/SQL Developer 6.0 用户指南 29
5. 优化
要优化你程序单元里的 SQL 语句,Oracle 的解释计划工具能对显示语句的运行路径
有很大的帮助,因此它被集成在 PL/SQL Developer 的 IDE 里。
要查看 SQL 语句或 PL/SQL 程序单元实际源的使用情况, PL/SQL Developer 能够
显示关于它运行情况的统计表。你可以配置你希望显示的统计表,并且能包括耗时、
CPU 时间、逻辑读、物理读、物理写等等。
要确定每一个单独的 PL/SQL 代码行的运行时间,你可以使用 PL/SQL 概览图。这个
特性对于 Oracle 8.0 或更早版本是不可用的。
最后,通过激活 SQL 跟踪,你可以使用 Oracle 的 tkprof 工具来获得程序单元里
关于所有已运行的 SQL 语句的资源的使用信息。
5.1 使用解释计划窗口
要使用 Oracle 的解释计划工具,请按工具栏里的新建按钮,选择解释计划窗口。此
时一个空的解释计划窗口就显示出来了。在窗口的上半部,你可以键入你希望分析的
SQL 语句。在按了工具栏里的执行按钮后,运行计划就被显示在窗口的下半部:
你现在可以改变 SQL 语句,再按执行按钮看看这个改变的效果。要了解关于解释计
划的更多信息,你可以阅读 Oracle 服务器调整手册。
要看查询计划里各种优化器目标的效果,请选择优化器目标列表里相应的条目,这个
计划将立即被更新到反映这些改变上。
使用第一个、下一个、上一个和最近操作按钮操纵查询计划的操作顺序。计划已经被
确定后,第一个操作将高亮显示。
解释计划工具使用所谓的计划表来储存运行计划。如果这个表对当前用户不可用,
PL/SQL Developer 将问你是否要在当前用户的计划里创建这个表。要定义哪几个列
来自于你要看的计划表,是什么顺序,请按首选项按钮,这将调出首选项页(请看第
14.20 章)。
Page 30

30 PL/SQL Developer 6.0 用户指南
注:如果你用的是 Oracle 服务器 7.2 或更早版本,耗费与基数在计划表里不可用。
如果你用的是 Oracle 服务器 7.3 或更高版本而耗费与基数不被显示,你大概需要
更新计划表。
如果你右击对象名列,这将为已选对象调出弹出式菜单。
在程序单元里分析 SQL 语句
大多数时间里,你希望分析的 SQL 语句都被包含在程序单元的源里。要做这个,你
可以选择程序编辑器里的 SQL 语句并且选择来自于帮助菜单的解释计划(或按 F5),
一个新的解释计划窗口将为已选的 SQL 语句创建。
当来自于程序单元的 SQL 语句包含了 PL/SQL 变量并且你运行解释计划窗口时,你
会收到一个"ORA-00904:列名无效"的错误,解释计划工具错误地把这些变量都当成
了列,因此每一个变量都必须加上一个冒号前缀。如果我们已经要求分析
employee.deptname 函数里的 SQL 语句,则 result 与 p_empno 变量肯定会按如下
被改变:
现在解释计划工具知道了哪一个标识符是列、哪个标识符是 PL/SQL 变量。
5.2 自动统计
当你在 SQL 窗口或者测试窗口执行语句时, PL/SQL Developer 将自动地生成一个
此执行的统计报告。有一个条件是你必须在动态性能表 v¥session, 、v¥statname
与 v¥sesstat 里有 select 权限(这些表通过标准的 plustrace 角色提供)。
你可以通过改变到 SQL 窗口或测试窗口顶部的统计表标签来查看统计报告。用于
employee.deptname 函数运行的统计表可能显示如下:
Page 31

PL/SQL Developer 6.0 用户指南 31
对于每一个统计值,你可以看到最近运行的值和当前会话的合计。你可以通过设置首
选项来配置统计表是否被显示或者哪一个值被显示,如第 14.2 章里所描述的那样。
统计表的默认设置与你的 SQL 和 PL/SQL 有关,如这儿所描述:
统计值 含义
CPU used by this
Physical reads
Physical writes
session logical
sorts (disk)
sorts (memory)
sorts (rows)
table fetch by rowid
table scan blocks
table scan rows
table scans (long
table scans (short
CPU 的使用(以百分之一秒为单位计)
从磁盘读出的块数
写到磁盘的块数
从块缓冲区或磁盘里读出的块数
在临时段里被运行的排序数量
在内存里被运行的排序数量
被排序的行数
按 rowid 获取的行数,通常为索引访问的结果
为全表扫描读的块数
为全表扫描读的行数
在长表里全表扫描的数量
在短表里全表扫描的数量
你能包含的其它统计表依赖于 Oracle 服务器的版本,不在本手册里被描述。如果你
希望获得关于它们的信息,有很多从事于这个主题的 Oracle 调整的书可用,Oracle
服务器参考手册也简要地描述了这些统计表。
统计表能被导出到 CSV 文件(逗号分隔值),以便以后能用电子表格软件打开它。
只要右击统计表、选择导出项目、选定 CSV 文件项目就可以了。二者择一地,你可
以选择 TSV 、XML 或 HTML 格式,或者选择复制它到剪贴板。
5.3 PL/SQL 概览图
PL/SQL 概览图是一个帮助你优化 PL/SQL 代码的很强大的工具。对于每一个已运行
的代码行,合计时间、最多时间、最少时间、平均时间和运行次数都将被确定。
Page 32

32 PL/SQL Developer 6.0 用户指南
在测试窗口里,概览图是容易访问的。在运行测试脚本前,简单地按测试窗口工具栏
里的创建概览图报告按钮就可以了。如果你随后运行脚本,你可以转到概览图页查看
运行报告。
下面的实例报告显示了在 employee.deptname 函数里 select 语句用时 149 毫秒,
3 个 dbms_output 调用用时 57 毫秒:
在默认情况下,概览图页将显示最近运行的报告。你也可以从运行列表里选择以前的
运行。单元列表允许你放大一个运行的特定的程序单元。
合计时间列显示了一个与行相关的时间的图形化描述,这个图形是与最多时间来做比
较的,这允许你快速确定最费时间的行。报告可以通过按列标题里的排序按钮来排序。
如果源行显示为红色,这意味着自概览图被创建以后程序单元已经被改变,因此现在
代码被显示的行跟概览图被创建的时候比是不一样的。
通过按首选项按钮,你可以把概览图报告改变成不同的版面外观,这将调出相应的首
选项页,如第 14.6 章里所述。
关于 PL/SQL 概览图的更多信息,请看在“ Oracle8i 应用包参考”手册里的
dbms_profiler 。
注:不是所有平台都能提供精确的时间信息。
5.4 SQL 跟踪
你可以通过按工具栏里的 SQL 跟踪按钮来激活 SQL 跟踪,此后所有的由 SQL 窗口
或测试窗口而来的服务器进程都将被登录到数据库服务器上的跟踪文件里。有一个前
提条件是,你正在使用的数据库实例的定时统计的参数必须被设成 True 。
你可以通过再一次按 SQL 跟踪按钮来禁止 SQL 跟踪。
你可以通过使用数据库服务器上的 Oracle tkprof 工具来查看跟踪文件里的信息,
它将为每一个 SQL 语句产生一个关于耗时、CPU 时间、I/O 等等的报告,因此它能
Page 33

PL/SQL Developer 6.0 用户指南 33
使你知道程序单元里哪一个语句最耗时间。要学习更多关于 Oracle tkprof 的知识,
你可以读一读“Oracle 7 服务器调整”手册。
运行 employee.deptname 函数的 tkprof 报告可以显示如下:
TKPROF: Release 7.2.2.3.1 - Production on Fri Sep 26 14:59:08 1997
Copyright (c) Oracle Corporation 1979, 1994. All rights reserved.
Trace file: ora07087.trc
Sort options: default
********************************************************************************
count = number of times OCI procedure was executed
cpu = cpu time in seconds executing
elapsed = elapsed time in seconds executing
disk = number of physical reads of buffers from disk
query = number of buffers gotten for consistent read
current = number of buffers gotten in current mode (usually for update)
rows = number of rows processed by the fetch or execute call
********************************************************************************
begin
:deptname := employee.deptname(:empno);
end;
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.01 0.01 0 0 0 1
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 0.01 0.01 0 0 0 1
Misses in library cache during parse: 0
Optimizer hint: CHOOSE
Parsing user id: 16
********************************************************************************
SELECT DEPT.DNAME
FROM
DEPT,EMP WHERE EMP.EMPNO = :b1 AND DEPT.DEPTNO = EMP.DEPTNO
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 5
Fetch 1 0.06 0.06 4 4 0 1
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 3 0.06 0.06 4 4 0 6
Misses in library cache during parse: 0
Optimizer hint: CHOOSE
Parsing user id: 16 (recursive depth: 1)
********************************************************************************
Page 34

34 PL/SQL Developer 6.0 用户指南
6. 专用 SQL
在程序开发期间,你经常需要运行一些 SQL 语句。既要测试语句,又要查看或者更
新表里的数据。你可以在 PL/SQL Developer 内部通过使用 SQL 窗口就能做好这件
事。
6.1 使用 SQL 窗口
要创建一个新的 SQL 窗口,请按工具栏里的新建按钮,再选择 SQL 窗口,一个空的
SQL 窗口就显示出来了。在这个窗口里,你可以键入 SQL 语句。如果它是 select
语句,窗口会分成两部分,下半部分是显示结果的表格。如果我们要查看雇员表里的
所有雇员, SQL 窗口将显示如下:
SQL 语句被运行, 10 行数据被提取。若结果集大于 10 行,可以通过按窗口与表格
之间的获取下一页和获取最后页来显示结果集,并且(更多...)被显示在状态行上。
最初只有 10 行被获取,这是因为能被显示在表格里的记录数只有这些。按获取下一
页按钮将获取下一个 10 行数据,等等。按获取最后页按钮将获取所有行。
如果你选择了 SQL 编辑器里文本的一部分,那么仅仅被选择的文本将被运行。这样,
你可以在编辑器里有多于一个的语句,一个一个地运行它们。
如果你运行 SQL 语句要花很长时间才能完成,你可以按中断按钮来终止它。注意按
中断按钮并不总是成功的。例如,如果语句正在等待锁,它将不响应中断信号。如果
你在 SQL 窗口正在获取行的时候按了中断按钮,它将简单地停止并显示已经被获取
的行,你现在可以用获取下一页和获取最后页来继续获取记录。
注意,SQL 窗口首选项允许你确定一个 select 语句最初可以获取多少行,这在第
14.18 章里有描述。
Page 35

PL/SQL Developer 6.0 用户指南 35
在窗口的右边你可以看到两个按钮,它们会允许你操纵已经输入进 SQL 窗口里的所
有 SQL 语句,这样你可以快速地再运行预先输入的语句。
为了优化目的,你可以通过选择统计表标签来查看 SQL 语句运行情况的统计表。统
计表在第 5.2 章里有解释。
当你打印 SQL 窗口时, SQL 语句和结果表格都将被打印。通过选择结果表格里的行,
你可以限制将要打印的行的数量。
6.2 结果表格处理
SQL 窗口的结果表格可以用不同的方法来处理。一些单元格类型有特殊的行为,行、
列和单元格排列都能被选择和打印,列可以被移动,行可以被排序,你可以转到单一
的记录来查看,等等。
识别 null 值
Null 值被显示于一个浅黄色背景的单元格里,所以你可以快速地从全是空格的值里
区别出它们。这对识别 null 值和在单元格里不直接显示的值也是有用的,如 long
值和 LOB 值。你可以通过首选项来改变 null 值单元格的颜色(请看第 14.18 章)。
查看大数据列
Long 、 Long Raw 、 CLOB 、 BLOB 与 BFILE 列的值不直接在结果表格里显示,表
格里只是简单地显示为 <Long> 、 <Long Raw> 、 <CLOB> 、 <BLOB> 和 <BFILE>:
当你点击某一列的单元格按钮时,大数据编辑器就被调出来了,它允许你查看或编辑
不同格式的数据。更多细节请看第 17 章。
你也可以点击字符列上的单元格按钮来调用大数据编辑器,不过单元格按钮仅存在于
大于 20 个字符的列。
查看日期列
日期列有一个显示日历的单元格按钮,这个日历的当前日期为高亮显示。如果日期还
有时间部分,你可以在日历上这样查看它的值:
Page 36

36 PL/SQL Developer 6.0 用户指南
查看时间戳列
时间戳列被显示在指定的格式里,这个格式在你的 Oracle 主目录的
NLS_TIMESTAMP_FORMAT 和 NLS_TIMESTAMP_TZ_FORMAT 的注册表设置里被指定。
查看 XML 数据
在数据库里储存 XML 数据有多种情形,都可以储存为: CLOB (Oracle8i) 、
XMLTYPE (Oracle9i) 或者甚至 Varchar2 、 Long 列。只要 XML 格式是以标准的
XML 标题开始,大数据编辑器无论如何都能识别出它并且转入 XML 格式。要了解更
多的详细资料,请看第 17 章。
查看嵌套游标列
如果你在 select 语句的字段列表里包含了嵌套游标,最初列值将被显示为
<Cursor>。按单元格按钮将调出新的 SQL 窗口,它带有一个有游标结果集的结果表
格,这可以用于查看简单的嵌套查询。注意每一个嵌套游标都将在暗中造成一个打开
的游标,因此对于大的结果集,你能容易地陷入 OPEN_CURSORS 的限制,并且得到
“ORA-01000:打开游标超越最大限制”的错误。
选择行、列与单元格
要在结果表格里选择行或列,只需点行标题或列标题并且拖动鼠标指针直到要选择的
区域高亮显示即可:
现在,选择的列可以通过释放鼠标按钮来移动了。再点已选列的标题中的一个,就可
以拖动已选列到新的地方了。
Page 37

PL/SQL Developer 6.0 用户指南 37
要选择一个特定范围的单元格,移动鼠标指针越过一个单元格的左边直到光标形态改
变,再按鼠标按钮,拖动鼠标直到要选择的区域高亮显示:
要选择所有的行与列,请按左上角的单元格,或者右击表格并选择来自于弹出式菜单
的全选项目。
已选择的高亮区域通常都能被复制或打印。
导出数据
有几个方法可以导出结果集表格里的数据。运行了 select 语句后,你可以采用如上
面所述的方法选择一定范围的单元格,右击它,在从弹出式菜单上选择导出结果项
目。这将显示出一个子菜单,在这里你可以选定导出数据到 CSV 格式(逗号分隔
值)、TSV 格式(制表符分隔值)、HTML 格式或者 XML 格式。选择了格式后,你就
能指定导出文件了。
作为选择,通过按 Ctrl-C,或者通过右击你选择的数据并且选择来自于弹出式菜单
上的复制或带标题复制项目,你就可以把你选择的数据复制到剪贴板上。随后,你可
以把这些数据粘贴到另外的应用程序里,例如电子表格、文字处理软件等等。
要在 Microsoft Excel 里快速地操作这些结果集信息,就选择复制到 Excel 项目,
这将打开一个新的 Excel 实例,并且所有已选择的数据也将被复制过去。
给行排序
要在结果表格里给行排序,请按你要排序的列的标题按钮:
按一次标题按钮,行被排成升序;再按一次标题按钮,行被排成降序;按第三次,行
将撤消排序。按另一个列的标题按钮将对这个列所在的行进行排序,但也将使用先前
的排序列为第二排序列(标题按钮上显示为一个圆点)。在上面的例子里,列 job
是第一排序列,列 hiredate 为第二排序列。
注意排序是在本地被运行的,并且仅仅是已经获取的行的排序。如果你在对结果排序
后又获取了另外一些行,这些新行将被添加到结果表格的末尾,并不排序。对于大的
Page 38

38 PL/SQL Developer 6.0 用户指南
结果集,本地排序能花很长时间。在这种情况下,最好能在 select 语句里使用
order by 子句,让 Oracle 服务器来排序。
单个记录查看
如果结果集包含很多列,每条记录都显示在一行上也许是不方便的,你必须前后滚读
相关的列(尽管你可以移动列),不能马上看到记录的所有的列。
通过按表格工具栏里的单个记录查看按钮,你就能一次查看一个单个记录了:
现在每行显示一个列名和值。表格工具栏里的下一个记录和上一个记录能被用于操纵
结果集。要转回到多记录查看,就再按一次单个记录查看按钮。
Page 39

PL/SQL Developer 6.0 用户指南 39
6.3 实例模式查询
运行了 select 语句后,如果你要搜索特定的记录,你可以按结果集上方的实例查询
按钮。按这个按钮将清除表格,只剩下一个空记录,在这里你可以输入你的查询值。
例如,如果你要查找部门编码为 20 的、以字母 A 打头的所有的雇员,就在列
ename 里输入 A% 并且在 deptno 列里输入 20 即可:
你一输入查询值,原始的 SQL 文本就会被修改以反映出新的查询要求。再按实例查
询按钮,或按执行按钮,将运行已修改的查询,并显示被限定的结果。再按实例查询
按钮,前面的查询值仍然被保留。按清除记录按钮就可以清除查询值了。
查询值不限制带有通配符的单一值,你可以使用下列表达式(也可以选择方括号里的
表达式):
• 值 [= 值]
• 带有通配符的值 [like 带有通配符的值]
• > 值
• != 值 [<> 值]
• in (值 1, 值 2, ...)
• between 值 1 and 值 2
• null [is null]
• not null [is not null]
注意,如果你使用了文字值,你可以省略字符值的引号(例如,在 SQL 文本里,
SMITH 将自动地被转换成 ‘SMITH’)。对于所有其它表达式,你必须提供 Oracle
服务器懂得的文字值(例如, !=’SMITH’)。对于数字和日期值,也是这种情形。
如果你要在表达式里使用它,就必须使用 Oracle 服务器懂得的格式。
Page 40

40 PL/SQL Developer 6.0 用户指南
有几个首选项允许你控制实例查询功能的默认行为(例如,区分大小写),第 14.18
章描述了这几个首选项。
6.4 连接查询
当查看一个结果集时,你经常要查询相关表。例如,当你查看 dept 表时,你也许要
查询一个部门里的所有雇员,或者反之亦然:当你查看 emp 表时,你也许要查询一
个雇员所在的部门。
多数情况下,这些父表与子表之间有外键约束,这时 SQL 窗口能够自动地为你生成
和运行这些查询。如果你确定了结果集里一条特定记录的位置,按表格工具栏里的连
接查询按钮,这将显示出一个弹出式菜单,里面包含了当前 select 语句的表的所有
父表和子表。例如,如果你在查询表 emp ,则下面的弹出式菜单将显示出来:
上面部分显示出了父表(和外键名),下面部分显示了子表。项目 dept 将为这个雇
员的部门(30)生成一个查询,第一个 emp 项目(父表里的)将为这个雇员的经理
(7839)生成一个查询,第二个 emp 项目(子表里的)将为被这个雇员管理的所有
雇员生成一个查询。
连接查询将在同样的 SQL 窗口里被运行,除非你使 SQL 窗口首选项在新窗口里执行
连接查询(参看第 14.18 章)。当你按住连接查询按钮同时再按 Ctrl 键时,这个
首选项将反向发生。
Page 41

PL/SQL Developer 6.0 用户指南 41
6.5 置换变量
当查询被运行时,你可以在你的 SQL 文本里使用置换变量以允许用户输入数据。置
换变量的最简单形式类似于你也许习惯使用的 SQL*Plus :
通过指定 SQL 文本里的 &deptno ,你将被提示为这个变量输入一个值。在运行前,
SQL 文本里的变量参照将被置换成这个输入值。你可以指定不止一个的置换变量,而
且你可以不止一次地指定一个单一的置换变量。此外,你还可以定义数据类型、默认
值、选择列表、列表查询、检验栏等其它高级选项。这些特性也被用于报告窗口,详
细情况在第 9 章里有描述。
Page 42

42 PL/SQL Developer 6.0 用户指南
6.6 更新数据库
要更新、插入或删除数据库里的记录,你可以在 SQL 窗口里运行适当的 DML 语句。
通过将 rowid 包括在选择列表里或者使用 select ... for update 语句 ,使结果
表格可以更新,这大概对我们是更加方便的:
你应该意识到,一个 select ... for update 语句将锁住所有已选的记录,所以一
般来说包括 rowid 可能是一种使结果集可更新的最好的方法。如果 select 语句是
一个内部联接,则第一个表的列就能被更新,所有的其它列都是只读,有别名的列也
不能被更新。
如果结果表格是可更新的,你可以按结果表格右边的编辑数据按钮来编辑记录,你可
以通过按插入记录或删除记录按钮来插入或删除表格里的记录。如果你已经选择了多
条记录,所有被选择的记录都会被删除。
实际上修改结果表格不会改变数据库里的任何东西。要记入已经更新、插入或删除的
记录到数据库里,请按记入改变按钮。如果你禁止了自动提交 SQL 窗口的选项,则
如果事务已经被开始,工具栏里的提交和回滚按钮就会被激活。要了解更多关于事务
的信息,请看第 12 章。
编辑大数据列
与前面一章解释的一样,你可以点击 Long 、 Long Raw 、 CLOB 、 BLOB 和 BFILE
列的单元格按钮来查看各种格式的值。当结果表格可更新时,你可以使用大数据编辑
器来改变列的值。
Page 43

PL/SQL Developer 6.0 用户指南 43
6.7 查看和编辑 XMLTYPE 列
SYS.XMLTYPE 类型不被 Oracle Net 9.0 和更早版本支持,所以你将不能直接访问被
存储在某一列里的 XML 数据。例如,如果 xml_text 是 SYS.XMLTYPE 列,则下列查
询将不提供预期的结果:
select id, xml_text from xml_table
仅仅 id 列将在结果集里显示出来。要查看 XML 数据,就要使用 getclobval() 成
员函数:
select id, t.xml_text.getclobval() from xml_table t
这样 CLOB 就能在文本编辑器里被看到, XML 语法高亮将自动地被应用。要编辑
XML 数据,就要使结果集可更新,这通常是通过包括 rowid 实现的:
select id, t.xml_text.getclobval(), rowid from xml_table t
现在你能编辑 CLOB 并且能记入已修改的数据到数据库了。注意,表和视图的查看数
据与编辑数据函数将自动地应用到这些规则里,因此查看或编辑 XMLTYPE 列的最简
单方法是右击表或视图,选择来自于弹出式菜单的相应的项目。
6.8 直接查询导出
对于有巨大的结果集的查询(上万条记录或更多),首先查询数据到结果表格,随后
把数据导出到文件里,这样做也许是不方便的。这也许会花很长时间和占用很多内存
资源。这样还不如直接写结果集到导出文件里更有效。要做到这一点,你可以按 SQL
编辑器右边的导出查询结果…按钮,以取代工具栏里的执行按钮。这将显示出一个弹
出式菜单,在这里你可以选择导出数据到 CSV 格式(逗号分隔值)、 TSV 格式(制
表符分隔值)、 HTML 格式或 XML 格式。选择了格式以后,你就可以指定导出文件
了,然后查询将被运行。在这种情形下,结果集不会被显示出来,只能被写到导出文
件里。
6.9 保存 SQL 脚本
如果你已经创建了 SQL 语句,希望以后再次运行它,你就可以把它保存为 SQL 脚
本。要做到这一点,请按工具栏里的保存按钮并且输入一个适当的文件名在保存对话
框里。 SQL 脚本的默认扩展名为 .sql ,但是你可以使用第 14.26 章里描述的首选
项来改变默认扩展名。注意,仅仅当前的 SQL 语句能被保存到文件里,并不是全部
的历史语句。要把历史包括到保存文件里,请右击 SQL 窗口,选择带有历史保存项
目。在那里,所有语句都将用斜杠分开。
Page 44

44 PL/SQL Developer 6.0 用户指南
你可以通过按工具栏里的打开按钮并选择 SQL 脚本来打开以前保存的 SQL 脚本,这
将创建一个新的 SQL 窗口。作为一种选择,你可以右击以前创建的 SQL 窗口并选择
载入项目,这将在现有的 SQL 窗口里打开一个 SQL 脚本。
6.10 创建标准查询
对于大多数表和视图,你会有各种各样的需要频繁运行的标准查询,例如:“显示所
有是经理的雇员”或者“按部门号码显示所有雇员的工资总额”。你可以保存这样的
查询为“标准查询”,以便以后能容易地从显示相应的表和视图的弹出式菜单里调用
它。当你右击在对象浏览器里、或者在 PL/SQL 或 SQL 源里的表或视图,这个弹出
式菜单就显示出来了。
在 SQL 窗口里创建了标准查询以后,你可以按结果表格工具栏里的保存为标准查询
按钮,下列对话框就会显示出来:
你可以输入被显示在弹出式菜单里的查询的名字,你还可以改变所有者和将显示标准
查询的表或视图的名字。按首选项按钮可以改变标准查询被存储的路径。
下列信息将与标准查询一起保存:
• SQL 文本
• SQL 窗口的大小
• 表格模式:多记录或单记录查看
注意,你可以使用置换变量(参看第 6.5 章)以使标准查询更为灵活。
Page 45

PL/SQL Developer 6.0 用户指南 45
7. 命令窗口
命令窗口允许你运行 SQL 脚本,这与 Oracle 的 SQL*Plus 很相似。要创建命令窗
口,请按工具栏里的新建按钮或在文件菜单里选择新建项目。不用离开 PL/SQL
Developer 的 IDE , 一个命令窗口就被创建了,你可以键入 SQL 语句或者你习惯
的 SQL*Plus 命令:
7.1 输入 SQL 语句和命令
就像在 SQL*Plus 里一样, 你可以键入多行 SQL 语句,用分号或者斜杠来结束输
入。你可以使用左右箭头来编辑命令行,用上下箭头重新调用先前输入的行。
通过输入编辑命令,你可以使用简单的文本编辑器来编辑整个输入缓冲区。编辑了缓
冲区以后,你可以通过在命令行上输入一个斜杠来运行它。编辑器有一个包括以前所
有已运行命令的历史缓冲区,以至于你可以快速地运行已修改的命令。
命令窗口的状态行给出了显示命令、显示结果、反馈、校验、自动打印、标题和耗时
选项。另外,你还可以通过双击这些选项来开和关它们。
Page 46

46 PL/SQL Developer 6.0 用户指南
7.2 开发命令文件
要开发带有多个 SQL 语句和命令的命令文件,你经常需要编辑这个文件,运行它,
再编辑它、再运行它,等等。要把这些事情变成一个轻松的过程,命令窗口有一个带
有 SQL 、 PL/SQL 和 SQL*Plus 语法高亮的内置的编辑器:
打开、执行和保存命令文件
要创建一个命令文件,请转到编辑器页并且输入命令。要在编辑器里执行命令,简单
地按工具栏里的执行按钮或按 F8 就可以,命令窗口将转回到对话框页并且将执行所
有命令。
要编辑一个现有的命令文件,请按工具栏里的打开按钮,选择命令文件项目。这将把
命令文件载入到一个新的命令窗口的编辑器里。作为一种选择,你可以在编辑器里右
击鼠标,选择来自于弹出式菜单的载入项目。要保存已修改的命令文件,请按工具栏
里的保存按钮。
一步一步地执行命令文件
如果你在执行前或在执行期间按了状态行上的暂停执行按钮,你就可以以可控方式一
步一步地运行脚本。下一个命令将被高亮显示在编辑器里,当你按状态行上的执行下
一个命令按钮,它就将被执行了。如果你又按了暂停执行按钮,执行将在下一步以后
正常地继续进行。你还可以通过使用 SET EXECPAUSE 命令在脚本里面强制设置一个
暂停。
Page 47

PL/SQL Developer 6.0 用户指南 47
7.3 支持命令
除了所有的 SQL 语句之外,在这个版本里,命令窗口还支持下列标准的 SQL*PLus
命令:
命令 含义
/ 运行 SQL 缓冲区
? [关键词] 对关键词提供 SQL 帮助
@[@] [文件名] [参数列表] 通过指定的参数,运行指定的命令文件
ACC[EPT] 变量 [DEF[AULT] 值]
[PROMPT 文本 | NOPR[OMPT]]
CL[EAR] [SCR[EEN]] 清除屏幕
CL[EAR] SQL 清除 SQL 缓冲区
COL[UMN] [列] [格式] 定义一个列的格式,显示一个列的格式,
CON[NECT] [用户名/口令@数据库] 带有指定用户连接到数据库
DEF[INE] [变量] [ = 文本] 定义置换变量,显示一个变量,或者显示
DESC[RIBE] 对象 给指定对象一个描述
DISC[CONNECT] 从数据库断开
EDIT 显示文本编辑器以编辑 SQL 缓冲区
EXEC[UTE] 过程 运行指定的过程
EXIT [APPLICATION] 退出正在运行的脚本或关闭命令窗口,添
GET [文件名] 载入命令文件到编辑器
HOST [命令] 执行主机命令
HELP [关键词] 对关键词提供 SQL 帮助
PAUSE [信息] 显示信息和暂停,直到用户按确定或取消
PRI[NT] [变量] 显示绑定变量或所有绑定变量的值
PROMPT [文本] 显示指定文本
QUIT [APPLICATION] 退出正在运行的脚本或关闭命令窗口,添
R[UN] 运行 SQL 缓冲区
REM[ARK] [文本] 一个注释行
SET AUTOP[RINT] [ON | OFF] 确定绑定变量在运行了 SQL 语句或
SET CON[CAT] [字符 | ON | OFF] 确定终止置换变量参照的字符(默认=.)
SET DEF[INE] [字符 | ON | OFF] 确定开始置换变量参照的字符(默认=&)
允许用户输入置换变量的值
或者显示所有列格式
所有置换变量。
加 APPLICATION 参数也将关闭 PL/SQL
Developer 。
按钮为止
加 APPLICATION 参数也将关闭 PL/SQL
Developer 。
PL/SQL 块以后是否自动地被显示出来。
Page 48

48 PL/SQL Developer 6.0 用户指南
命令 含义
SET ECHO [ON | OFF] 确定在脚本里已执行的命令是否被显示出
来
SET ESC[APE] [字符 | ON | OFF] 确定中断开始置换变量参照字符的字符
(默认=\)
SET FEED[BACK] [ON | OFF] 确定 SQL 语句受影响行数是否被显示出来
SET HEA[DING] [ON | OFF] 确定在结果集列上面的标题是否被显示出
来
SET LONG [宽度] 确定一个 LONG 列的最大显示宽度
SET NUM[WIDTH] [宽度] 确定不带精度的数字列的最大显示宽度
SET PAGES[IZE] [大小] 确定在标题被重复以前的结果集的显示行
数
SET PROMPT [提示] 替换标准的 SQL> 提示,改为你也能使用
变量 [user] 、 [db] 或 [connection]
的文字文本。此外,你还可以包括一个绑
定变量( set
prompt :bind_var_name )。
SET SCAN [ON | OFF] 确定置换变量是否应该被扫描
SET SERVEROUT[PUT] [ON | OFF]
[SIZE n]
确定调用 dbms_output.put_line 的输出
是否被显示出来,并且输出缓冲区的大小
是多少。
SET TERM[OUT] [ON | OFF] 确定已运行的 SQL 语句的输出是否被显示
出来
SET TIMI[NG] [ON | OFF] 确定关于已运行的 SQL 语句的计时信息是
否被显示出来
SET VER[IFY] [ON | OFF] 确定当被用于 SQL 语句或 PL/SQL 块的时
候置换变量是否被显示出来。
SHO[W] ERR[ORS] [类型名] 显示以前编译或者指定对象的错误
SHO[W] REL[EASE] 显示当前连接的 Oracle 版本信息
SHO[W] SQLCODE 显示已运行的 SQL 语句的结果代码
SHO[W] USER 显示当前连接的用户名
SPO[OL] [文件名 | OFF] 开始或停止假脱机
STA[RT] [文件名] [参数列表] 通过指定的参数,运行指定的命令文件
STORE SET [文件名] 在[文件名]里存储所有选项的值,你可以
以后运行这个文件以恢复这些选项。
UNDEF[INE] 变量 不定义已设定的置换变量
VAR[IABLE] [变量] [数据类型] 定义一个绑定变量,显示一个绑定变量或
显示所有的绑定变量。
WHENEVER [OSERROR | SQLERROR]
[动作]
指定一个动作,用于无论 OS 或 SQL 何时
出现错误。这个动作既可以是 EXIT 又可
Page 49

PL/SQL Developer 6.0 用户指南 49
命令 含义
以是 CONTINUE ,随便地被 COMMIT 或
ROLLBACK 跟随着。
上面所有这些命令函数都与 SQL*Plus 相同。下面的命令是 PL/SQL Developer 特有
的:
命令 含义
BEAUT[IFY] 文件 | 对象 使用当前规则或者 SET BEAUTIFIERRULES
命令指定的规则来美化指定文件或数据库
对象。
BROWSE 对象 在对象浏览器里选择对象
EDIT 对象 打开带有对象定义的可编辑窗口
EDITD[ATA] 表 | 视图 为带有可编辑结果集的表或视图打开一个
SQL 窗口
EXPORT[DATA] 表 为指定表打开导出工具
INFO 显示关于连接的信息
PROP[ERTIES] 对象 为指定对象显示一个属性窗口
QUERY[DATA] 表 | 视图 为带有只读结果集的表或视图打开一个
SQL 窗口
REC[OMPILE] 对象 重新编译对象
SET BEAUT[IFIERRULES] [文件] 临时使用来自于指定文件的美化器规则,
这可以带着 BEAUTIFY 命令使用。
SET COL[WIDTH] [宽度] 确定结果集里的最大列宽。如果 Width =
0 ,则不限制宽度。默认为 80 。
SET EXEC[PAUSE] [ON | OFF] 在下一个命令暂停执行( ON ),或者在
下一个命令正常继续执行( OFF )。
SQLPLUS 带有当前文件调用 SQL*Plus 。
TEST 程序单元 对于指定的程序单元,打开一个带有标准
测试脚本的测试窗口。
VIEW 对象 打开一个带有对象定义的只读窗口
Page 50

50 PL/SQL Developer 6.0 用户指南
8. 创建与修改非 PL/SQL 对象
在 PL/SQL 开发期间,你会发现你经常需要创建表、修改约束或索引、复位一个序列
等等。PL/SQL Developer 有几个功能允许你创建与修改表(以及相关元素)、序
列、同义词、库、目录、用户和角色。这一章并不解释这些对象的功能,只解释你怎
样才能创建、修改和查看这些属性。要了解关于每个对象的更多信息,请看 Oracle
的诸如“ SQL 参考指南”这样的文档。
要创建一个对象,你既可以按工具栏里的新建按钮选择相应的对象类型,也可以选择
文件菜单里的新建按钮。你还可以右击对象浏览器里对象类型的根文件夹,选择来自
于弹出式菜单的新建项目。
要修改一个对象,就要在浏览器里选择它,右击它,选择来自于弹出式菜单的编辑按
钮。你不能这样就改变一个对象的名字,必须明确地使用来自于对象浏览器的重新命
名功能来改名(如果对象浏览器支持的话)。如果你仅仅要查看对象,就选择来自于
弹出式菜单的查看项目。
另外,你还可以通过选择对象浏览器弹出式菜单里的复制项目来复制一个对象。这个
对象的编辑器窗口将显示出来,它带有被填充在里面的、除了所有者(如果可应用的
话)和名称之外的所有属性。这样,你能快速地创建一个相似的对象,以用于探索一
个可供选择的办法、运行一些危险的或破坏性的测试、或者做其它任何事情。
8.1 表定义编辑器
表定义编辑器有 7 个标签页以用于表的不同方面:
Page 51

PL/SQL Developer 6.0 用户指南 51
在编辑器的底部,你能看到下列 6 个按钮:
• 应用 – 将应用你在编辑器里做的所有的修改到数据库里。
• 刷新 – 再一次获取来自于数据库的定义,放弃你可能已经做了的任何改变。
• 关闭 – 关闭编辑器窗口。
• 帮助 – 显示在线帮助。
• 查询 – 调用一个带有查询的 SQL 窗口,这个查询允许你查看和编辑表数据。
• 查看 SQL – 显示带有 SQL 语句的文本编辑器,这个 SQL 语句是表定义编辑器
里产生了改变的结果。如果你还没有做任何改变,它将显示出完整的 SQL 创建
语句。
接下来的章节将对表定义编辑器的各个页进行描述。
一般页
一般页在先前的章节里有显示,它包括了表的所有者和名称、存储信息、簇信息和注
释。对于一个新表,除了名称之外,你可以同意所有的属性为空。所有其它属性将设
为默认值:
• 所有者 – 当前登录的用户。
• 表空间 – 当前用户默认的表空间
• %空闲 – 10
Page 52

52 PL/SQL Developer 6.0 用户指南
• %已用 – 40
• 初始事务数 – 1
• 最大事务数 – 255
段属性的默认值(初始大小、下一个大小、%增加、最小数量和最大数量)依赖于相
应的表空间默认值。
簇信息、存储信息和持续时间属性互相独占,这是因为簇会在暗中定义表存储特性,
临时表不能成为簇并且也有固有的存储特性。
如果你输入或选择一个簇名,存储属性和持续时间属性将变为只读,簇列就能被输
入。清除簇名字具有相反的作用。
如果你定义表为临时的,簇和存储信息将变为只读,你就可以定义行在提交后是否需
要被保护了。
如果你要定义一个索引结构表,你就必须定义一个主键。对于一个堆积构成的表(默
认),这个就不需要了。
如果你正在修改一个现有的表,并不是所有的属性都能被改变。对于一个数据库里已
经存在的表,表空间、初始大小、最小大小、簇信息、持续时间属性和构成属性都不
能被改变。如果你要改变这些属性中的任何一个,你必须把窗口顶部的重建表选项设
为已检验。结果,表首先被删除掉,再用新的定义重建。所有数据、触发器、外键参
照都会丢失,所以在使用这个选项时,你要特别小心!
Page 53

PL/SQL Developer 6.0 用户指南 53
列页
在列页你可以查看、添加、删除、移动和修改表列。如果你创建了一个对象表,你还
可以在这个页里选择对象类型:
要添加一个列,你可以按插入列按钮,或者你可以在末尾行(这里将创建一个新的空
的末尾行)开始键入新列的信息。对于大多数通用数据类型,类型列有一个建议列
表,但在这里你还可以使用其它数据类型。列的默认需要你按适当格式输入一个值,
例如字符串值必须用引号引上。
要删除一个列,请按删除列按钮。这既会删除一个当前在焦点上的列,又能删除所有
的已选列。你可以通过点击行标题选择一个或更多的列,拖动鼠标将选择一个范围的
列。按 Ctrl 键同时点击行标题将允许你选择多个单独的列。
要移动一个或更多的列,就按前一段的描述选择它们。现在你就能点击已选标题中的
一个,移动它到你希望的地方了。
对于现有的表,你不能改变现有列的名字,除非你用的是 Oracle9.2 或更新版本。
你还不能删除一个这样的列,除非你用的是 Oracle8i 或者更新版本。要克服这些限
制,你必须把一般页上的重建表选项设为已检验,这一选项的作用在先前的章节中有
描述。
注意,改变列名将自动地被传递到约束列、索引列和簇列。
如果你在这个标签页的顶部选择了类型所有者和类型名,你就可以创建一个基于这个
对象类型的对象表。现在列名和类型就被定义了,并且被限制到对象类型的顶级属
Page 54

54 PL/SQL Developer 6.0 用户指南
性。你还可以定义列是否允许为 null 、默认值、它的存储以及注释。如果你以后要
改变对象类型,就必须选择一般页上的重建表选项。
键页
在键页上,你可以查看、添加、删除和修改表的主键、唯一键和外键约束:
这个表格能按先前章节里列表格同样的方法操作。你可以添加、删除和修改键的约
束。移动约束不会有任何用,就像它们没有被真正地排列好一样。
注意,被用于强迫为主键或唯一键约束的基础索引的存储信息在这个页里不被定义。
如果约束被激活,在索引页上会自动有一个相应的具有相同名字的索引出现。对于这
个索引,你可以定义存储定义。禁止或删除主键或者外键约束将在暗中删除基础索
引。
类型列有一个允许你选择主、唯一或外键类型的列表。你可以通过键入首字符
( P 、U 或 F )快速地选择恰当的类型。注意,表只能有一个主键约束,这个列
(主或唯一)的默认值就依赖这个了。改变类型将影响参照表、参照列和层叠列,这
是因为它们仅仅对外键约束有效。改变类型到外键也将暗中删除索引。
Page 55

PL/SQL Developer 6.0 用户指南 55
要定义列到约束应用的地方,你在适当的单元格(被逗号分隔)里简单地键入列名就
可以,或者按单元格按钮也可以。这将调出列选择屏幕,在这里你能容易地添加、移
除或移动(重排)键列:
对于外键约束,你可以键入或者选择参照表。这样做将自动地选择基于这个表主和唯
一键约束的默认的参照列。这个列的选择列表显示出所有列的设置,它们为参照表整
理出主或唯一键约束,因此在这里它们仅仅为候选者。在级联删除列表栏里,对于父
记录被删除时子表里的记录,你可以定义应该执行什么行动。Set null 行为在
Oracle8i 和更新的版本里被支持。
如果你用的是 Oracle 8i ,你还可以定义约束是否可延迟,在最初是否已延迟。这
两个选项有明显的关系:你不能拥有一个初始已延迟的而又是一个不可延迟的约束。
Page 56

56 PL/SQL Developer 6.0 用户指南
检查页
在检查页里你可以查看、添加、删除和修改表的检查约束:
这个表格能用与列表格一样的方法操作,你可以添加、删除和修改检查约束。
条件列应该包括了对表里的所有行都必须是真(或空)的布尔表达式。如果一个或多
个行违反条件,你就不能应用检查约束,除非你同样不设允许选项为已检验。在改正
了违反条件行以后,检查约束才能被允许。
如果你用的是 Oracle8 或更新版本,你还可以定义约束是否是可延迟的、最初是否
被延迟。这两个选项有明显的关系:你不能拥有一个初始已延迟的而又是一个不可延
迟的约束。
Page 57

PL/SQL Developer 6.0 用户指南 57
索引页
在索引页里你可以查看、添加、删除和修改表的索引:
这个表格能用与列表格一样的方法操作,你可以添加、删除和修改索引。
索引的所有者能被设为空,默认的所有者是当前登录的用户。如果你要为索引使用不
同的用户,就从这个列表里选择它。
索引的类型可以是 Normal 、Unique 或 Bitmap 。最后一个索引类型只能用于
Oracle7.3 服务器和更新版本。注意,如果数据库里每一行的索引列都是真正唯一
的,你就只能创建唯一索引。只要不是这种情况,你就不能应用这个索引到数据库
里。
要定义你要建索引的表的列,你在适当的单元格(被逗号分隔)里简单地键入列名或
者按单元格按钮就可以。这将调出列选择屏幕,在这里你能容易地添加、移除或安排
索引列。
对于基于索引的函数,你可以指定函数,用逗号分隔。对于递减索引,你可以用
DESC 跟随列名。
你还可以允许索引的键压缩,包括前缀列的数字压缩,你还可以定义索引为相反的索
引。
如果索引是主或唯一键的索引,则所有者、名称、类型和列就不能被修改。这些特性
全部得自键约束。改变键约束的名称将自动地改变相应的索引名,改变约束列将改变
用于索引的相应的列。索引的所有者总是与表的所有者相同,索引的类型总是唯一
的。
Page 58

58 PL/SQL Developer 6.0 用户指南
存储参数能通过按单元格按钮来定义或查看,这将调用存储编辑器:
对于新索引,你不必输入任何信息,因为每一个属性都有一个默认值:
• 表空间 – 针对当前用户默认的表空间。
• %空闲 – 10
• 初始事务数 – 2
• 最大事务数 – 255
段属性的默认值(初始大小、下一个大小、% 增加、最小数量和最大数量)依赖于相
应的表空间默认值。% 已用特性不能应用到索引里。
注意,如果你修改了现有索引的 % 空闲、初始大小和最小数量特性,这将暗示索引
(和约束)将被删除掉和被重新创建,这种改变也会被应用。对于大的索引,这可能
是非常耗费时间的。
Page 59

PL/SQL Developer 6.0 用户指南 59
权限页
在权限页里,你可以在表里授予/撤回给/来自用户和角色的权限:
这个表格能用与列表格一样的方法操作,你可以添加、删除和修改被授予者。删除一
个被授予者与撤回这个人所有的权限等效。
被授予者是你要授予权限的用户或角色。注意,给角色授予的权限常常不能满足于存
储程序单元开发的目的。如果用户在表里通过角色被授予了 select 权限,参照这个
在已存储的程序单元里的表,编译将失败,这是因为表是未知的。如果对象是被用于
他或她拥有的程序单元里的,用户必须亲自被授予 select 权限。
单独的权限列能有 3 个值:
• (空白) – 被授予者没有权限
• Yes – 被授予者有权限
• Grantable –被授予者有权限,并且能授予它到其它用户和角色
选择、插入、更新、删除权限允许被授予者在表记录里运行这些动作,参照权限允许
被授予者创建外键到这个表,改变权限允许被授予者用改变表命令改变表定义,索引
权限允许被授予者在表里创建索引。
Page 60

60 PL/SQL Developer 6.0 用户指南
分区页
分区页仅仅在你(重新)创建表的时候或者在你编辑现有的已分区的表的时候是可见
的:
在页的顶部,你可以选择 Range 、 Hash 或 List 来分区,使用分区列也可以。在
表格里,你可以定义名称、列的值(如果可应用的话),可以存储每一个分区。如果
你定义了不只一个分区列,你必须用逗号来分隔这些值。
Page 61

PL/SQL Developer 6.0 用户指南 61
查看与修改 SQL
在创建了一个表以后,或者修改了一个现有的表以后,你可以通过按查看 SQL 按钮
来查看作为结果的 SQL 。在添加了注释到表中并且修改了 ename 和 job 列到
varchar2 数据类型后,作为结果的 SQL 就像这样:
你可以使用窗口右上角的相应按钮保存 SQL 到一个文件或者复制它到剪贴板,工具
栏里的打印按钮将打印 SQL 。你还可以产生一个改变到 SQL 并且应用已改变的
SQL 。在应用了已改变的 SQL 以后,窗口将转到表格模式并且刷新表定义。已产生
到 SQL 的改变将立即在表格里被反映出来。
如果你再一次按查看 SQL 按钮,窗口将转到表格模式,抛弃了任何你可能已经生成
到 SQL 的未应用的改变。
如果你已经选择了浏览器里的查看选项来查看表定义,查看 SQL 按钮就将显示表创
建的 SQL ,不带有前面所述的带有删掉命令的它。这样,你可以在文件里保存表定
义,或者复制表定义到另一个数据库或用户。
Page 62

62 PL/SQL Developer 6.0 用户指南
8.2 序列定义编辑器
序列编辑器允许你容易地创建或修改一个序列:
大多数属性都有一个默认值,当创建一个序列时,你只需要应用一个名字:
• 所有者 – 当前登录的用户
• 最小值 – 1
• 最大值 – 不限制
• 初始值 – 1
• 增量 – 1
• 高速缓冲区大小 – 20
• 循环 – 关
• 排序 – 关
8.3 同义词定义编辑器
同义词编辑器允许你容易地创建或修改同义词:
所有者的默认值将是当前登录的用户。设公共选项为已检验将创建公共同义词,并且
将产生只读的所有者输入框。对象所有者和对象名称输入框有一个建议列表,以便容
易地为同义词选择一个事务对象。如果对象所有者输入框是空的,对象名称列表将显
示出所有对象。
Page 63

PL/SQL Developer 6.0 用户指南 63
8.4 库定义编辑器
库定义编辑器允许你容易地创建或修改库:
所有者的默认值将是当前登录的用户,你可以使用建议列表来创建带有不同所有者的
库。文件说明是你要使用的 3GL 库完整的文件说明。如果你正在数据库服务器上搞
开发,那么你可以使用选择 DLL 文件按钮来选择动态连接库。另外,你必须键入
DLL (Windows) 的名字或共享对象(UNIX)。文件说明的有效性并不被检验。
8.5 目录定义编辑器
目录编辑器允许你容易地创建或修改一个目录,这个目录随后能被用于 BFILE :
如果你正在数据库服务器上搞开发,那么你可以使用选择目录按钮来选择目录的路
径。目录路径的有效性并不被检验。
Page 64

64 PL/SQL Developer 6.0 用户指南
8.6 作业定义编辑器
作业定义编辑器允许你创建或修改一个作业:
创建一个新的作业与调用 dbms_job.submit 相同,修改一个现有的作业与调用
dbms_job.change 相同。要了解更多关于作业的信息,请看 Oracle 供应包参考手册
里的 DBMS_JOB 章。
What 输入区域旁边的打开 PL/SQL 编辑器按钮可以调用更加方便的带有语法高亮的
PL/SQL 编辑器、代码助手,等等。
8.7 队列定义编辑器
队列定义编辑器允许你创建或修改一个高级队列:
对于队列表的名称,你可以选择一个现有的队列表,或者你可以按创建按钮来创建一
个新的队列表( 请看第 8.8 章)。
要了解关于 Oracle 高级队列的更多信息,请看下列 Oracle 文档:
• 应用程序开发指南 – 高级队列
• 补充的 PL/SQL 包和类型参考
Page 65

PL/SQL Developer 6.0 用户指南 65
8.8 队列表定义编辑器
队列表定义编辑器允许你创建或修改一个高级队列表:
在一般标签页上,你可以定义表的名称、存储参数和注释。在权限标签页上,你可以
在表上授权给用户和角色。请看第 8.1 章。
在队列页上,你可以提供队列表说明信息。对于有效载荷,你可以选择一个现有的对
象类型或 RAW 来创建一个裸队列。
要了解关于 Oracle 高级队列的更多信息,请看下列 Oracle 文档:
• 应用程序开发指南 – 高级队列
• 补充的 PL/SQL 包和类型参考
Page 66

66 PL/SQL Developer 6.0 用户指南
8.9 用户定义编辑器
用户定义编辑器允许你创建或修改一个用户、它的权限和表空间限额:
注意,你需要指定系统权限(例如由 DBA 角色提供的)来查看和修改用户信息。
一般页
在一般页里,你基本上只需要输入名字和口令,所有其它属性都有一个默认值:
• 默认表空间 – SYSTEM
• 临时表空间 – SYSTEM
• 概要文件 – DEFAULT
• 口令期限 – 关
• 账户被锁住 – 关
如果你要修改一个现有的用户,当前的口令将不被显示。输入一个新的口令可以改变
它,或保留为空白则不改变口令。如果用户要在外表上被鉴别,你就不能输入一个口
令。
Page 67

PL/SQL Developer 6.0 用户指南 67
对象权限页
这一页允许你查看和修改被授予到用户的对象权限,这不包括间接地通过角色授予的
权限。
在第一列里,你可以看到被授权到用户的对象。所有其它列都描绘出了一个指定的权
限,每一个权限可以有下列值:
• (空白) – 用户没有权限
• Yes – 用户有权限
• Grantable –用户有权限,并且能授予权限到其它用户或角色。
角色权限页
这一页显示了被授权到用户的角色。每一个角色权限都是可授予的,所以用户可以授
予权限到其它用户和角色。如果角色权限是默认的,则用户登录时角色将被激活;如
Page 68

68 PL/SQL Developer 6.0 用户指南
果它不是默认的,则对于在用户已经登录后通过执行 set role 命令的会话,角色权
限必须明确地被激活。
系统权限页
这一页显示了被授予到用户的系统权限。每一个系统权限都可以是可授予的,所以用
户能授予它到其它用户和角色。
限额页
这一页显示了用户的表空间限额。你可以输入用户能在表空间里分配的最大数量的字
节、千字节或兆字节,或者你可以指定限额为不限制。
Page 69

PL/SQL Developer 6.0 用户指南 69
8.10 角色定义编辑器
角色定义编辑器允许你创建或修改一个角色和它的权限:
在默认的状态下,角色不需要被鉴别。你同样也可以对角色定义口令鉴别或外部鉴
别。口令鉴别需要你输入一个口令,如果角色没有默认地被授权到用户,这就是有用
的。在用户登录以后,这样的角色需要被明确地设置,并且需要口令。
其它三个标签页(对象权限、角色权限和系统权限)以与用户定义功能相应页一样的
方法工作。
Page 70

70 PL/SQL Developer 6.0 用户指南
8.11 概要文件定义编辑器
概要文件定义编辑器允许你编辑资源限制、口令限制和用户的概要配置:
每一个限制能被设置为默认,这样值将从标准概要配置的 DEFAULT 到 Unlimited 或
一个具体值被继承。
在用户标签页上,你可以定义到应用这个概要文件的哪一个用户。注意,如果你从概
要文件里移除一个用户,它将在暗中被改变到 DEFAULT 概要文件里。
8.12 数据库连接定义编辑器
数据库连接定义编辑器允许你创建和编辑数据库连接:
注意,当你编辑一个现有的数据库连接时,口令和鉴别属性将不会被获取,你必须在
编辑数据库连接时每次都输入这个信息。
Page 71

PL/SQL Developer 6.0 用户指南 71
9. 报告
要运行面向你的应用数据或 Oracle 词典的报告,你可以使用 PL/SQL Developer 内
置的报告功能。这里有很多标准的报告,并且你还可以创建你自己的定制报告。这些
定制报告能被保存在报告文件里,它们能依次被包括在报告菜单里,这对你经常运行
自己习惯的定制报告是很容易的。
9.1 标准报告
标准报告通过报告主菜单是可以访问的。例如,如果你选择了编译错误报告,你将首
先被提示输入你要显示当前编译错误的对象类型、所有者和名称:
在输入了适当的值并按了确定按钮后,报告将被显示出来:
其结果是一个 HTML 文档,可以通过 PL/SQL Developer 内部的 HTML 查看器或者
Internet Explorer ActiveX 控件来显示,这两种显示方法的选择依赖于首选项(请
看第 14.8 章)。
随后你可以通过按工具栏里的打印按钮来打印报告,或者你可以通过按报告窗口右边
的保存结果按钮来保存 HTML 格式的报告。复制为 HTML 按钮将复制结果到剪贴板。
Page 72

72 PL/SQL Developer 6.0 用户指南
导出结果按钮允许你导出结果为 CSV 、 TSV 或 XML 格式,或者直接导出结果到
Excel 。
如果报告没有被锁定,编辑报告按钮提供了对报告定义的访问。
你可以右击报告来选择另外的选项。
9.2 定制报告
创建定制报告是很容易的。首先你通过工具栏里的新建按钮创建一个新的空白报告,
然后选择来自于弹出式菜单的报告窗口项目。一个空的报告窗口将显示出来:
在 SQL 编辑器里,你可以为你的报告键入一个简单的 SQL select 语句。对于主题/
明细报告,你可以使用内部联接的 select 语句(这将在以后描述)。让我们通过键
入 select 语句和按工具栏里的执行按钮,简单地以清楚明白的 emp 表来开始:
Page 73

PL/SQL Developer 6.0 用户指南 73
这是一个很基本的报告,仅仅带有已应用的默认字体属性。下面章节将描述你怎样才
能精制报告功能。
9.3 变量
在你可以运行前,你的报告经常需要某些额外的输入。让我们来假定你要限定来自于
先前章节的报告到仅仅一个部门的雇员。如果是那样的话,你需要在 SQL 文本里提
供一个置换变量:
select * from emp
where deptno = &department
order by ename
当这个报告被运行时,在 select 语句被运行前,用户会被提示给 department 输入
一个值。这当然并不十分安全。要是用户什么都不输入呢?这个语句将会导致 ORA-
00936:缺少表达式 异常。要是用户输入的值不是数字呢?或者要是输入的数字在
dept 表里不存在呢?要防止这些情况,你可以使用下面章节中描述的参数选项。这
些选项被指定在两个括号之间,就像 HTML 或 XML 文档里的属性一样。
Name 选项
在变量输入表里,变量的名称被作为提示来使用,所以你应该确认它确实描述了变量
的含义。如果名称仅仅是一个选项,那么它仅仅是一个不必在两个括号之间指定的选
项。如果名称包括了空格或其它特殊字符,那么就用双引号引上它。下面的两个例子
是等效的:
select * from emp
where deptno = &”Department number”
order by ename
和
select * from emp
where deptno = &<name=”Department number”>
order by ename
Hint 选项
除了名称选项之外,你还可以指定提示文本。当变量有焦点的时候,这个提示将被显
示在变量输入表的状态行上:
select * from emp
where deptno = &<name=”Department number”
hint =”Only employees from this department will be listed”>
order by ename
Type 选项
类型选项限定用户能被输入的信息,也控制什么样的值应该被插入到作为结果的 SQL
文本:
select * from emp
where deptno = &<name=”Department number”
type =”integer”>
order by ename
Page 74

74 PL/SQL Developer 6.0 用户指南
在这种情形下,用户只能输入有效的整数值,输入的值将原封不动地被放到 SQL 文
本里。然而对于字符串,你要把值用引号引上。考虑一下下列的 select 语句:
select * from emp
where ename = &<name=”Employee name”
type=”string”>
如果你在变量输入表里输入 SCOTT (没有引号),作为结果的 SQL 将是:
select * from emp
where ename = ‘SCOTT’
有效的类型是: none 、string 、integer 、float 和 date 。对于日期值,有效将
不出现,所以用户可以另外提供诸如 sysdate 、trunc(sysdate, ‘MM’) 等表达
式。
Required 选项
对于某一变量,如果你要求有一个值,那么就设它的 required 选项为 “yes” 或
“true”:
select * from emp
where deptno = &<name=”Department number”
required=”yes”>
order by ename
现在,对于部门号码,如果一个值被指定,那么报告只能被运行。
Default 选项
要为变量提出一个默认值,就要指定 default 选项:
select * from emp
where deptno = &<name=”Department number”
default =”10”>
order by ename
默认值也可以是一个 select 语句,这个 select 语句应该仅仅能返回一行一列。例
如:
select * from emp
where deptno = &<name=”Department number”
default =”select min(deptno) from dept”>
order by ename
在这种情况下,默认值将是最小的部门号码。
Ifempty 选项
作为一种选择,要生成一个需要的变量或提供一个默认的值,万一用户不指定它,你
可以指定 ifempty 值:
select * from emp
where ename like &<name=”Employee name”
type=”string”
ifempty=”%”>
如果用户不指定一个值,百分号就会被使用,所有的雇员将会被获取。这个选项不能
与 required 选项一起被指定。
Page 75

PL/SQL Developer 6.0 用户指南 75
Uppercase 选项
如果你有一个字符串变量要在暗中把它的值转换到大写,那么就设置它的 uppercase
选项为“yes” 或“true”:
select * from emp
where ename = &<name=”Employee name”
type=”string”
uppercase=”yes”>
值作为形态被显示,但在作为结果的 SQL 文本里被转换为大写。
Readonly 选项
变量可以通过指定 readonly=”yes” 被定义为只读。用户可以看到变量和它的值,
但不能改变它。
Hidden 选项
你可以通过指定 hidden=”yes” 来隐藏变量。
List 选项
list 选项为用户提供了可能的值的列表,你可以指定项目以逗号分隔的列表:
select * from emp
where deptno = &<name=”Department number”
list =”10, 20, 30, 40”>
order by ename
这允许用户选择四个项目中的一个,或键入一个不同的值。在这种情况下,使用
select 语句会有更多的意义:
select * from emp
where deptno = &<name=”Department number”
list =”select deptno from dept order by deptno”>
order by ename
你还可以为每一个项目提供一种描述:
select * from emp
where deptno = &<name=”Department number”
list =”10, ACCOUNTING,
20, RESEARCH,
30, SALES,
40, OPERATIONS”
description=”yes”>
order by ename
现在每一个项目都被描述跟随着,并且 description 选项被添加了。这个列表仅仅
显示描述,实际值将被用于作为结果的 SQL 文本。
此外,你还可以用两个字段的 select 语句做同样的事情:
select * from emp
where deptno = &<name=”Department number”
list =”select deptno, dname from dept order by dname”
description=”yes”>
order by ename
Page 76

76 PL/SQL Developer 6.0 用户指南
要限定用户到列表里正确的项目,就要指定 restricted 选项:
select * from emp
where deptno = &<name=”Department number”
list =”select deptno, dname from dept order by dname”
description=”yes”
restric ted =”yes”>
order by ename
现在,用户只能从列表里选择值了,不能手工输入任何其它值。
列表里的项目有时能依赖另外一个变量的值。假设你要创建显示指定表所有列的报
告,表通过所有者和名称来鉴别,对于所有者你可以使用数据库里所有用户的列表,
对于表名你可以查询已选所有者的 all_tables 视图:
select * from all_tab_columns
where owner = &<name="Owner"
type="string"
list="select username from all_users order by username">
and table_name = &<name="Table"
type="string"
list="select table_name from all_tables
where owner = :owner
order by table_name">
order by column_id
正象你可以看到的,第二个(表)列表的 select 语句通过 :owner 绑定变量引用了
第一个变量。只要 owner 的值被改变,表列表就将被移民。
注意,绑定变量的名称不能长于 30 个字符,不能包含空格或其它特殊字符。变量名
里的空格将被转换为下划线。如果变量名是 Owner of the table ,则绑定变量名将
是 :owner_of_the_table 。
还要注意的是,如果变量的值是空的,则依赖的列表也将是空的。在这种情形下,查
询不会被运行。
Checkbox 选项
如果用户选择两个可能性中的一个,你可以使用 checkbox 选项。这个选项需要有已
检验和未检验值跟随:
select * from emp
order by hiredate &<name=”Descending sort order”
checkbox=”desc, asc”>
即使你总是必须指定两个值,其中之一也还是可以为空:
select * from emp
order by hiredate &<name=”Descending sort order”
checkbox=”desc,”>
因为都默认为上升排序,所以这两个例子是等效的。
Prefix 和 suffix 选项
如果变量值是空的,这可能意味着 SQL 文本的某一固定部分也必须被省略。考虑一
下你要提供一个可选择的排序列的例子,如果列没有被指定, order by 子句应该
Page 77

PL/SQL Developer 6.0 用户指南 77
被完全忽略。在这种情况下,你可以指定这个文本为变量的 prefix 或 suffix 。如
果变量值是空的,前缀和后缀还是被忽略为好:
select * from emp
&<name=”Descending sort column”
list=”empno, ename, hiredate”
prefix =”order by "
suffix=” desc”>
如果这个变量的值没有被指定,那么结果还是为空好:
select * from emp
如果列被指定,结果应该是:
select * from emp
order by empno desc
要注意前缀后面的和后缀前面的空格,这些是重要的,因为前缀、值和后缀都象被指
定那样紧密地连接在一起!
换码符
如果你希望在 SQL 文本里使用应该不被解释为置换变量的 & 符号,那么就用双 &
符号来代替。下面的例子将获取来自于‘R&D’部门的所有雇员:
select * from emp
where emp.deptno in (select dept.deptno from dept
where dname = 'R&&D')
order by empno desc
如果代之以使用文本‘R&D’,你就会因 D 变量而被提示。
9.4 精制版面
打开了一个新的报告窗口以后,键入一个 select 语句,再运行报告,版面将使用默
认的风格属性。它将有一个简单的表格式版面,带有标准的字体属性、表风格、颜色
等等。要精制标准的版面,请转到版面标签页。对于新的报告,这一页将如下所示:
Page 78

78 PL/SQL Developer 6.0 用户指南
正如你看到的,你可以为所有版面项目(报告标题、变量、表和字段)定义各种版面
属性。如果你要为一个单独的字段定义属性,你首先必须按工具栏里的刷新字段列表
按钮:
现在,select 语句结果集的所有字段都被包括到版面表格里了,你可以设置每一个
单独字段的版面属性。如果你把字段的风格、标题或对齐保留为空,那么来自于默认
字段的相应属性将被使用。
改变了版面属性以后,你可以再一次运行报告来查看结果的效果。作为一种选择,你
可以激活工具栏里的自动更新选项,这样每一个改变都会马上反映到结果里。
下面的章节详细地描述了各种各样的版面属性。
显示
版面表格最左边一列的检验栏指出版面项目是否
应该被显示,这允许你禁止报告标题或变量,允
许你控制指定字段是否应该被显示。
描述
报告标题的描述将在报告的顶部和在每一个分页
符之后被显示出来,变量的描述将被显示在变量
的上面。
对于单独的字段,你可以越过标准的字段名来定
义一个描述,这个描述将用于列标题。
风格
风格控制了版面项目的外观,按单元格按钮
(...)就调出了风格编辑器:
Page 79

PL/SQL Developer 6.0 用户指南 79
在风格编辑器顶部的列表栏里,你可以看到所有的标准风格和定制风格。你可以从风
格库(请看第 9.5 章)里选择一个标准的风格,或者你可以选择定制的风格以便你
能为当前的版面项目改变各种风格属性。
注意,这个风格系统是基于层叠式样式表(CSS)的标准。你在风格编辑器里看到的
属性是最常用的,当然你还可以在标准的属性下面添加其它的 CSS 属性和值。例
如,你可以添加一个值为 20pt 的 Height 风格属性,它把单元格高度设置为 20 个
点。关于层叠式样式表的更多信息,请看 http://www.w3.org/TR/REC-CSS2 。
复制与粘贴按钮允许你复制一个风格的属性,所以你可以快速地得到一个来自于现有
风格的新的风格。
如果你没有为字段风格定义什么,来自于风格库的 Default Field 风格将被使用。
你可以通过定义 Default Field 版面项目的风格来越过这个,你可以在字段级通过
指定相应的风格来越过这个默认风格。注意,每一个字段标题继承了它的来自于
Default Header 风格的风格属性,所以你只需要越过你要改变的属性。例如,如果
你定义了 Default Field 风格为 Verdana, 14 pt, blue ,并且你要显示的 EMPNO
列为 Verdana, 14 pt, red ,那么你只需要在 EMPNO 级定义颜色。字体和字号将
自动地从 Default Field 级被继承。
各种版面项目的默认风格在第 9.5 章里有描述。
标题
正如你能为个别字段数据设置风格,你还能为它们的标题设置风格。如果你没做任何
定义,来自于风格库的 Default Field Header 风格将被使用。你可以通过定义
Default Header 版面项目的风格来越过这个,你可以通过指定相应的标题风格在字
段级越过这个默认风格。注意,每一个字段标题都继承了它的来自于 Default
Header 风格的风格属性,所以你只需要越过你要改变的属性就可以。
对齐
你可以按下列方法对齐版面项目:
• 左 – 项目在单元格里左对齐
• 右 – 项目在单元格里右对齐
• 居中 – 项目在单元格里居中对齐
• 默认 – 数字右对齐,其它项目左对齐
• 无 – 不指定对齐
注意,你还可以为版面项目设置文本对齐风格属性,这将把先后次序带到你可以在版
面表格里指定的对齐选项。还要注意的是,对齐的效果可能依赖于版面项目的 Width
风格属性。
Page 80

80 PL/SQL Developer 6.0 用户指南
格式
在默认的情况下,字段的格式被数据类型、数值范围和精度所控制。你常常要使用被
计算的字段或合计的字段,这样数值范围和精度是未知的。在这种情况下,你可以指
定一个格式。
格式属性仅仅对日期和数字字段有效果。对于数字字段,你可以使用 9 为禁止零的
阿拉伯数字、0 为正常的阿拉伯数字、G 为千分隔符、D 为十进制分隔符、E 为科学
符号。另外,你还可以在单引号或双引号里指定文字文本。一些例子:
格式 值 = 1234 值 = 5 值 = 0.1
999G990D00 1,234.00 5.00 0.10
9G990 1,234 5 0
0000 1234 0005 0000
0”%” 1234% 5% 0%
0D000e+00 1.234e+03 5.000e+00 1.000e-01
0D000e-0 1.234e3 5.000e0 1.000e-1
对于日期字段,你可以使用标准的 Windows 日期和时间格式。
Page 81

PL/SQL Developer 6.0 用户指南 81
中断
中断版面属性允许你构成你的报告结果。假定你要显示部门和它们的雇员,你可以为
此指定下面的查询:
select d.*, e.*
from emp e, dept d
where e.deptno = d.deptno
order by d.deptno, e.empno
这当然会导致一个简单的表格式报告:
通过在 LOC 列指定一个中断,你会为你的报告获得更好的结构:
一直到(包括) LOC 的字段的重复值将被禁止显示。简而言之,每个 dept 记录只
被显示一次。在这种情况下,记录被按部门(DEPTNO 列)排序是必要的。如果你要
重复每个中断后面的标题,请使用 Break + Header 选项。
Page 82

82 PL/SQL Developer 6.0 用户指南
作为一种选择,你可以选择 Master/Detail 版面:
对于一个报告,你可以有多重中断。查询的 order by 子句必须保证结果集在所有的
中断列上都被排序。
和
和属性允许你包括一个字段的和:
你可以指定和在中断级、报告级或两者都有被计算。
Page 83

PL/SQL Developer 6.0 用户指南 83
页眉
要定义页眉,你首先必须设置页的大小(请看第 9.6 章)。报告标题将在每一分页
符之后被重复,还可以包括下列变量:
• OSUser – 操作系统用户。
• DBUser – 连接到数据库的用户。
• Database – 用户连接到的数据库。
• Date – 当前日期。
• Time – 当前时间。
• Page – 当前页。
要在页眉里包括这样一个变量,在它之前要有一个 & 字符。例如:
All employees (&dbuser@&database)
如果你要运行用户为 scott 、数据库为 chicago 的报告,页眉将象下面这样:
All employees (scott@chicago)
既然报告被设定为 HTML 格式,你还能把 HTML 代码包括在里面。要包括一个图象,
你可以包括 <img> 标签:
All employees <img src=logo.gif>
要包括左对齐、居中和右对齐信息,你可以使用带有三个 单元格的单行表,并且在
相应的单元格里包括这些信息:
<table width="100%"> <tr> <td>&dbuser</td> <td align="center">All
Employees</td> <td align="right">&page</td> </tr> </table>
这被显示为:
Scott All Employees 1
注意,你可以在所有版面项目的描述里使用这些变量和 HTML 代码,但是对于报告标
题它们不是最常用的。
Page 84

84 PL/SQL Developer 6.0 用户指南
9.5 风格库
代替一遍又一遍地定义和重新定义同样的风格,你可以按工具栏里的风格库按钮来创
建与修改你的标准风格。例如,如果你想把包含 SQL 表达式的所有字段都显示为
Courier New, 12 pt, blue ,那么简单地定义一个在库里带有这些属性的 SQL 风
格,再应用它到相应的地方就可以了。
这里有许多有特定含义的风格名:
风格名 描述
Default Report
Default Variables 将被应用到变量
Default Tabular
Default Form
Default Field
Default Field
这些是默认的风格,所以在个别的报告里你可以通过定义相应的版面项目风格来越过
它们。
注意,所有已用的风格(标准的和定制的)都被存储在报告文件里。当一个报告被运
行和一个风格需要被应用时, PL/SQL Developer 将尝试在风格库里定位它。当它不
可用时,来自于报告文件的风格将被使用。这将确保若非风格仍然被否决你的报告总
是能正确地显示出来。
将被应用到报告标题
将被应用到所有表格式表(例如明细记录)
将被应用到所有表单式表(例如主记录)
将被应用到没有已定义风格的所有字段
将被应用到没有已定义风格的所有字段标题
9.6 选项
你可以为你的报告指定各种不同的选项:
Page 85

PL/SQL Developer 6.0 用户指南 85
连接参数
连接参数决定了报告查询将怎样运行。例如,如果在 SYS 的账号下运行你的报告是
必须的,那么你可以在用户名的输入框里输入这个名字。另外,你可以输入口令,或
者你可以保留它为空。如果你保留它为空,当报告被运行时,你将被提示输入口令。
如果报告应该总是在同样的数据库实例里被运行,你还可以指定数据库 。作为一种
选择,你可以在数据库输入框里输入 * 号,它表示报告应该在当前的数据库里被运
行。
使用本连接选项允许你禁止或允许报告的连接参数。如果它被禁止,当前的 PL/SQL
Developer 连接将被使用。
安全
安全选项允许你锁定报告定义(SQL ,版面和选项),以至于用户不能查看或改变
它。如果连接参数指定了一个有权限的带有口令的账户(例如 SYS),安全选项也许
是有用的。如果一个用户能够改变 SQL ,若报告没有被锁定,他或她就能够运行
SYS 帐户下的任何语句。
安全能被设置为下列值之一:
• 不锁定 – 任何人都能改变报告定义
• 锁定其他用户 – 如果你知道报告的口令,或者如果你带有与连接参数里被指定
的一样的账号在 PL/SQL Developer 里被连接,只有你才能改变报告的定义。
• 锁定所有用户 – 在你能改变报告的定义前,你总是被提示输入报告的口令,不
管当前你是怎样在 PL/SQL Developer 里被连接的。
如果报告被锁定,报告文件(.rep)就被加密了,以至于不能用文本编辑器来查看或
改变它。
版面选项
• 表单版面 – 在默认的情况下,除了主记录以外,所有记录都在表格版面上显
示。主记录在表单版面上显示。通过激活这个选项,所有记录都将在表单版面上
显示。 如果每一条都有很多 与/或 宽字段,不能显示在一个单一行上,这个选
项就可能是有用的。
• 左边距 – 报告左边空白处的像素数量。这个选项仅仅工作于如果你使用
Internet Explorer 作为 HTML 查看器的时候。
• 上边距 – 报告顶部空白处的像素数量。这个选项仅仅工作于如果你使用
Internet Explorer 作为 HTML 查看器的时候。
• 分页符 – 行的数量应在分页符后面显示,报告标题将在每个分页符后面重复再
现。
• 仅 NBSP – 当它被允许时,数据里所有的空格都将被转换到 HTML 输出里的
NBSP(不断开空格)。当它被禁止时,正常的空格将被使用。这能影响到版面,
因为 HTML 查看器将显示连续的空格为一个空格。
Page 86

86 PL/SQL Developer 6.0 用户指南
• 包括 SQL – 当它被允许时,报告的 SQL 文本将被包含在 HTML 输出里。
其它选项
• 背景图象 – 应该被显示在这个报告的背景里的图象(.jpg 或 .gif)。你可以
使用选择文件按钮来查找你的图象文件。
• 背景颜色 – 应该被显示在这个报告的背景里的颜色。
9.7 报告菜单
在默认的情况下,报告菜单项目被包括在主菜单里,只包含了标准的报告。这些标准
的报告位于 PL/SQL Developer 安装目录的 Reports 子目录里,菜单是这个目录结
构的简单表现。选择来自于报告菜单的一个项目将运行那个报告。
你可以在这个目录里添加或移除报告,你还可以通过工具菜单里的配置报告项目来配
置报告菜单。这将调出下列对话框:
默认报告目录选项指出了报告菜单是否应该包括来自于 PL/SQL Developer 安装目录
的 Reports 子目录,这个目录包含了标准的报告。这个选项下面的编辑区包含了应
该被包括的目录列表。你可以用手工键入目录,或者你可以通过按右边的添加目录到
列表按钮选择一个目录。
注意,报告文件和子目录将被并入到报告菜单里。你应该设法防止在这个目录列表里
有重复的子目录和报告文件名,否则,你将在报告菜单里获得不明确的菜单项目。
风格库也可以在这个报告配置对话框里访问到(请看第 9.5 章)。
Page 87

PL/SQL Developer 6.0 用户指南 87
10. 工程
要组织你的工作,你可以使用 PL/SQL Developer 内置的工程概念。一个工程是由源
文件、数据库对象、注释和选项的集合构成的,它允许你工作在一组特定项目的范围
里,以代替整个数据库或方案。这会使你容易地查找你需要的工程项目,或者容易地
从一个地方或数据库移动工程到另外一处。
工程明了你的桌面配置,如果你重新打开一个工程,所有的过去在工程被关闭以前被
打开过的项目都将在同样的位置被打开。自动保存桌面首选项必须为此激活。这个信
息没有被储存在工程定义文件(工程.prj)里,而在工程桌面文件(工程.dsk)里。
注:要用工程来工作,使用工程首选项必须被激活。如果不是这样,主菜单将不包括
工程项目。对于所有的工程菜单项目,也有相应的工具栏按钮,它们能通过工具栏首
选项页(请看第 14.9 章)被添加到工具栏里。
10.1 创建一个新工程
要创建一个新工程,请选择来自于工程菜单的新建项目,这将调入工程选项对话框:
在一般页上,你可以定义工程被打开时你要连接到何处,你还可以定义编译错误出现
后你是否还要继续编译工程。
项目页允许你查看工程项目,这可以是 PL/SQL 程序单元的源文件、测试脚本、SQL
脚本、报告等等。工程的项目还可以是被储存在数据库里的对象,这些对象在源文件
没有陈述。当工程被创建时,项目列表显然将是空的。
注释页允许你维护工程注释,这些注释能够包含任何东西,例如任务列表、工程决
定、设计等等。
Page 88

88 PL/SQL Developer 6.0 用户指南
10.2 保存工程
设置了选项以后,你可以通过来自于工程菜单的保存项目来保存工程,这将创建一个
带有扩展名 .prj 的工程文件。工程文件包括了项目说明、选项和注释。因此,当你
改变选项时或者当你改变注释时,无论你何时添加或移除项目,你都必须保存工程。
保存工程将不会隐含地保存包含在工程里的源文件。
10.3 添加源文件到工程
要添加一个源文件到你的工程,你首先必须在 IDE 里打开源文件。在打开了源文件
以后,你可以简单地选择来自于工程菜单的添加到工程项目。对于程序文件(包含
PL/SQL 程序单元的源),项目在暗中为编译而被激活。这意味着当你生成或建立工
程时,这个文件将被包括到编译进程里。其它文件,例如测试脚本、SQL 脚本、报告
文件等等,将不会为编译而被激活。
注意,如果可能的话,源文件的路径被储存为相对于工程文件的位置。例如,如果文
件被定位于与工程文件相同的目录,路径将不被保存。如果文件在别处,整个路径将
被保存。这使工程产生容易地从一个目录移动到另外一个目录的“便携式”效果。
10.4 添加数据库对象到工程
要添加数据库对象到工程,就要在浏览器里右击它,选择来自于弹出式菜单的添加到
工程项目。正象程序文件一样,PL/SQL 程序单元将在暗中为编译而被激活。其它对
象,例如表和序列,则不能被编译。
作为一种选择,你可以从对象浏览器拖放一个数据库对象到工程项目窗口(请看下
面)。
如果当前用户拥有数据库对象,则所有者将不被保存到工程文件里。如果另外一个用
户拥有这些对象,则所有者将被保存为对象说明的一部分。这使工程从一个用户移动
到另一个用户变得很轻松。
Page 89

PL/SQL Developer 6.0 用户指南 89
10.5 用工程项目工作
在添加了项目到工程以后,你可以选择来自于工程菜单的工程项目来用工程的项目工
作。工程项目窗口可以如下面所示:
最初的四个程序文件允许被编译,两个测试脚本、SQL 脚本以及表和序列不允许被编
译。
你可以保持工程项目窗口一直是打开的,以便快速和容易地访问所有工程项目。这个
窗口是工程桌面的一部分,当工程被重新打开时它也将在暗中被重新打开。
要编辑一个项目,你简单地双击它就可以。如果项目是一个源文件,它将在一个相应
的窗口(程序窗口、测试窗口等等)里被打开。如果项目是一个数据库对象,相应的
带有对象定义的编辑器将被打开。
作为一种选择,你可以右击一个项目来调入像上面显示的弹出式菜单,在这里你可以
禁止/允许编译项目,或者你可以从工程中移除项目。如果项目是数据库对象,你还
可以使用作为子菜单的对象弹出式菜单。
要改变工程项目的顺序,你可以点击行标题把它拖到一个新的位置。这个顺序不仅仅
在表面上重要,它还决定了编译的顺序。
10.6 编译工程
要编译一个工程,你可以选择来自于工程菜单的建立或生成项目。
建立功能将简单地编译所有的允许编译的工程项目,项目将按显示在工程项目列表里
的顺序编译。如果一个项目编译失败,工程选项出现第一个错误后停止决定了工程编
译是否应该继续进行:
Page 90

90 PL/SQL Developer 6.0 用户指南
生成功能只编译那些自上次编译以来已经被改变的项目。如果 PL/SQL 程序单元作为
一个数据库对象被包括,并且它在数据库里是无效的,那么它也将被重新编译。编译
的时间戳被储存在对象桌面文件里。允许编译但是最新的项目,将在编译进程窗口里
被列出为被跳过。
Page 91

PL/SQL Developer 6.0 用户指南 91
11. 任务项目
你可以在任何源文件里使用任务项目以产生一个简要的注释,它记载了在这个源文件
里需要做的一些事情,你以后可以从任务列表里访问这个信息。这些任务项目被放到
了源文件里,作为一种在适当位置的带有特定格式的注释:
在这个例子里,你可以看到源文件里的注释(开始于文本 TODO:)和任务项目编辑
器,在这个编辑器里你可以输入文本、优先权、种类、所有者、创建日期和关闭日
期。对于优先权、种类和所有者输入框,选择列表的目录能通过首选项(请看第
14.23 章)来定义。
任务项目能通过任务项目编辑器来访问,在这个编辑器里你可以方便地创建、编辑、
查看或删除任务项目。只要不改变格式,你还可以直接在源文件里编辑注释。
因为任务项目在源文件里被作为注释来存储,所以它们将始终与源的实际情况一致,
不管源是否来自于数据库、来自于文件系统或者来自于一个版本控制系统的旧版本。
Page 92

92 PL/SQL Developer 6.0 用户指南
要访问指定源文件的所有任务项目,你 可以调用任务列表:
在这里,你可以快速地查找一个任务项目和通过双击它或通过按转到按钮在源文件里
定位它。
任务列表可以通过点击列标题来排序。
11.1 创建任务项目
要创建一个任务项目,你首先必须把光标放到源文件里适当的位置上。这个位置是注
释将要被插入的位置,是接近你要工作的地方,所以这件事是重要的。其次你可以右
击这个位置,选择来自于弹出式菜单任务项目子菜单的添加项目:
在上面提到的任务项目编辑器将显示出来,你可以为新的任务项目输入信息。在按了
确定按钮之后,注释将被准确地插入到光标位置。
11.2 编辑任务项目
要编辑现有的任务项目,你既可以右击源文件里相应的注释并且选择来自于任务项目
子菜单的的编辑项目,又可以选择显示列表项目(如果你当前不接近你要编辑的任务
项目的话)。那样你可以从列表里选择任务项目并按编辑按钮。
现在,你可以改变任务项目的各种属性并按确定按钮来更新源文件里的注释了。
Page 93

PL/SQL Developer 6.0 用户指南 93
11.3 关闭任务项目
通过右击源文件里的注释并选择来自于任务项目子菜单的关闭项目,任务项目就能被
关闭。作为一种选择,你可以调用任务项目编辑器并按关闭按钮。
11.4 删除任务项目
通过右击源文件里的注释并选择来自于任务项目子菜单的删除项目,任务项目就能被
删除。作为一种选择,你可以调用任务项目编辑器并按删除按钮。
你还可以简单地从源文件里删除注释。
Page 94

94 PL/SQL Developer 6.0 用户指南
12. 窗口、数据库会话和事务
PL/SQL Developer 提供了多会话/多线程环境。
多会话意味着,即使你在 L/SQL Developer 里只登录了一次,各个数据库会话也能
被用于测试窗口、SQL 窗口和命令窗口。此外,程序单元编译也将出现在各个数据库
会话里。记住,编译是 DDL 语句并在暗中提交当前的事务,如果与其它窗口共享同
样的会话,这有可能产生有害的结果。
多线程意味着,测试窗口、SQL 窗口和命令窗口的运行可以同时运行,不会互相妨
碍。它的优势是,当长的连续的 SQL 语句正在运行时你可以做其它的工作,你可以
中断或关掉会话,你可以测试你的程序单元的锁定行为,等等。
12.1 会话模式
多线程意味着你需要一个多会话的环境。记住,对于任何特定的数据库会话,Oracle
服务器每次只能运行一个语句。如果某些事情运行在不同的会话里,那么他们只能同
时运行。所有的开发环境都不允许有不限制数量的会话,所以就需要设置首选项(请
看第 14.2 章)以控制 PL/SQL Developer 将要使用的会话的数量。这个首选项被调
用到会话模式,可以有下列的值之一:
• 多路会话 – 每一个测试窗口、SQL 窗口和命令窗口都将有它自己的会话,另外
的一个会话将被用于编译。这是最灵活的设置,明显地会导致最大数量的数据库
会话。另外可能的缺点是,在更新被提交之后,它们只在 X 窗口里可以看到而
在 Y 窗口里看不到。
• 双路会话 – 测试窗口、SQL 窗口和命令窗口将共享一个会话,另一个会话将被
用于编译。这个模式的缺点是每次只有一个窗口可以运行程序。
• 单路会话 – 所有的窗口和所有的编译都使用同一个会话,这使事务管理变得很
困难。在这个模式里调试器被禁止使用。如果你被限制只能使用一个数据库会
话,那么你只能使用这个设置了。
12.2 运行于多路会话或双路会话模式
当你在多路会话和双路会话模式里运行测试窗口、SQL 窗口和命令窗口时,工具栏里
的中断按钮将被激活,这样你可以在任何时间中断运行。中断并不总是成功的,例如
在锁定情况下就是这样。这样,如果你有权限,就可以采用会话菜单里的关掉项目。
如果你移动当前运行窗口的鼠标光标,它的状态就会改变,以显示它正在运行并且你
不能对那个窗口的内容做任何修改。
当运行完成之后,如果事务已经开始,提交和回滚按钮就会被激活。在多路会话模式
里,每一个窗口有它自己的会话,所以也有它自己的事务,提交和回滚按钮将反映出
最上面窗口事务的状态。
Page 95

PL/SQL Developer 6.0 用户指南 95
13. 浏览对象
当你在 Oracle 数据库里正在开发一个程序单元的时候,这个程序单元总是会访问其
它的数据库对象。记住,如果这不是实际情况,那么这个程序单元根本就没有在这个
数据库里的权利。要写这样一个程序单元,你必须确切地知道这些其它数据库对象是
怎样被定义的。因此,下面列出的问题对于 Oracle 程序员来说将是很熟悉的:
• 这个列的数据类型是什么?
• 这个表的主键是什么?
• 那个被打包的函数的准确名称是什么?
• 这个参数的默认值是什么?
• 这个触发器的触发条件是什么?
• 哪个对象调用了我正在用的函数?
• 等等...
通过使用浏览器,所有这些信息在 Oracle 词典里都是可利用的,都可以从 PL/SQL
Developer 内部访问到。
13.1 使用浏览器
通过选择工具菜单里的浏览器项目,你能获得可用的浏览器。浏览器显示出了数据库
里所有的与开发程序单元有关的基本对象。你可以操纵这个树形视图,这与你使用
Windows 的 Explorer 来操纵文件夹的方法一样。打开表文件夹就显示出了可以通过
当前会话访问的所有的表,打开一个指定表的文件夹就显示出了与这个表有关的所有
属性,打开表下面的 Foreign keys 文件夹就显示出了这个表的所有外键,等等。最
近对象文件夹包括了所有的在 PL/SQL Developer 里最近用过的对象。
无论你何时打开文件夹,从字典里查询的信息都被读
进了内存,以使后来的访问尽可能地快。在某些事情
被改变后,要强制浏览器重新查询这个信息,你必须
选择已修改的对象并按在窗口左上边的刷新按钮。你
还可以通过选择来自于弹出式菜单的相应项目来刷新
对象。要刷新整个浏览器,在按住刷新按钮同时请按
Ctrl 键。
你可以把对象从对象浏览器拖放到工作空间里,这将
调出带有对象定义的编辑器。你可以通过设置首选项
来准确地控制什么功能应该被执行(请看第 14.10
章)。
你可以把对象从对象浏览器拖放到编辑器里,这将调
出一个弹出式菜单,它的内容依赖于这个对象。你可
以选择复制名称(如果必要的话通过所有者加上前
缀)、属性、描述和其它有关文本到编辑器里你要放
的地方。如果你拖放一个文件夹到一个编辑器里面,
Page 96

96 PL/SQL Developer 6.0 用户指南
文件夹里所有的对象名都将被复制,这些对象名都将用逗号分隔。你可以设置一个首
选项来控制对象名是放在一行上还是多行上(请看第 14.11 章)。
通过在对象图标上按右鼠标按钮,一个前后关系敏感的弹出式菜单就显示出来了,它
允许你执行这个对象上的其它功能。这些来自于弹出式菜单的功能在下面的段落里有
所描述。
在选择期间,通过使用 Ctrl 或 Shift 键,你能选择多个对象。如果多个对象被选
择,对象的弹出式菜单将只显示那些对所有已选对象可应用的项目,并且拖放功能将
同时工作在所有的对象上。
浏览器的首选项(请看第 14.10 章)允许你定义哪些文件夹是可见的、以什么顺序
显示。它还允许你定义在最近对象文件夹里能看到的对象的最大数量。此外,你还能
定义对浏览器对象双击的行为。在默认的情况下,这将扩展相应的节点,你还可以定
义这样将调出对象定义编辑器或属性窗口。
创建新对象
要创建一个新的程序单元、表、视图、序列或同义词,请右击这样一个对象或这个对
象类型的根目录,选择来自于弹出式菜单的新建项目。
使用程序单元的新建功能将创建新的程序窗口,初始内容来自于指定的模板,如第
20 章所述。
视图能被创建于 SQL 窗口,初始内容来自于指定的模板,就象程序单元一样。
表、序列和同义词将被显示在指定的编辑器窗口里。表、序列和同义词编辑器在第 8
章里有详细描述。
复制对象
通过选择来自于弹出式菜单的复制项目,你可以复制表、序列或同义词。这将调出一
个带有已选对象所有属性的编辑器窗口,除了名称以外。如果你要创建一个相似的表
来执行某些测试,这就可能是有用的。
复制对象或文件夹名
要复制一个对象名或者一个文件夹里的对象名,请选择逗号分隔复制项目,这样做将
把名称放到剪贴板上。你可以设置首选项来控制对象名是放在一行上还是放到多行上
(请看第 14.11 章)。
查看对象属性
要查看指定对象的属性,请选择来自于弹出式菜单的属性项目。你看到的实际属性依
赖于对象类型和你的 Oracle 服务器版本。
Page 97

PL/SQL Developer 6.0 用户指南 97
属性被显示在你能放到屏幕上任何地方的模式窗口里。你可以保持属性窗口是可见的
(它将停留在其它窗口的顶部)并且继续在另一个窗口里进行编辑。你还可以通过按
窗口右上方的按钮来卷起和放开窗口。这样,你能容易地有空间做其它事情,并保持
属性是可用的。
查看对象描述
通过选择来自于弹出式菜单的描述项目,表、视图、函数、过程、包、类型和方法是
能被“描述”的,这在某种程度上类似于我们熟悉的 SQL*Plus 。就象前面提到的属
性窗口一样,描述也被显示在一个模式窗口里。
对于表和视图,所有的列和它们相关的属性都被显示在属性窗口里。对于函数、过程
和方法,参数和它们的属性会被显示。对于包,它们的函数、过程、变量、类型、常
数和异常会被显示。对于类型,方法和属性会被显示。
在描述窗口里,你可以选择行、列或一定范围的单元格。要选择行或列,只点击行标
题或列标题再拖动鼠标指针使选择区高亮显示就可以。要选择一个特定范围的单元
格,移动鼠标指针越过一个单元格的左边直到光标形态改变,再按鼠标按钮,拖动鼠
标直到要选择的区域高亮显示。选择的内容能被复制或打印。要产生一个以逗号分界
的已选单元格的拷贝,请右击窗口选择来自于弹出式菜单的相应项目。要导出描述到
CSV 、TSV 、HTML 或 XML 文件,请选择来自于导出子菜单的相应项目。要打印出描
述窗口的内容,请选择打印项目。
通过在描述窗口里双击一个单元格,单元格的内容就会被复制到最上面窗口的编辑器
里。
要在描述窗口里对行进行排序,请按你要对行进行排序的那一列的标题按钮。
Page 98

98 PL/SQL Developer 6.0 用户指南
查看对象定义
所有的对象类型都有定义,要查看这个定义,你可以选择来自于弹出式菜单的查看项
目。对于所有的程序单元、视图、表、序列和同义词,这个项目都是可利用的。对于
表的元素如列或索引,如果你选择了查看项目,它将显示出表的定义并导向已选择的
元素。
程序单元将显示在程序窗口里,视图将显示在 SQL 窗口里,表、序列和同义词将显
示在指定的编辑器窗口里。表、序列和同义词编辑器在第 8 章里有详细描述。
编辑对象定义
通过选择来自于弹出式菜单的编辑项目,你可以编辑一个直接来自于数据库的对象定
义。你可以通过第 14.2 章描述的首选项来禁止这个特性。
重新命名对象
通过选择来自于弹出式菜单的重新命名项目,表、视图、序列和同义词能被重新命
名。如果你使用的 Oracle 9.2 或更新版本,你还能重新命名列。带有旧名称的对话
框将显示出来,在这里你可以修改和应用它。
删掉对象
有时候删掉一个对象是必要的,它可能已经没有用了,或者必须从一种类型改变为另
一种类型(例如从函数改到过程)。要实现这个,只要选择来自于弹出式菜单的删掉
项目就可以了。
浏览相关对象
大多数对象既有参照又有被参照的对象,通过选择浏览项目你就能快速地在浏览器里
定位相关的对象。
重新编译对象
对象经常参照数据库里其它对象。无论这些被参照的对象何时改变,参照对象都可能
变得无效。在这种情况下,一个红色标志被显示在这个对象的图标里。要编译无效对
象,请选择来自于弹出式菜单的重新编译项目。如果编译成功,那个标志就不显示
了。如果编译失败,你就可以通过选择来自于弹出式菜单的查看项目来查看错误。
添加对象源到编辑器
通过选择添加源到编辑器项目,程序单元的源文件能被添加到程序窗口或测试 窗口
里。
对于程序窗口,源将被添加到当前程序单元后面的一个新页上。这样你可以创建一个
包括几个已经存在于数据库里的程序单元的程序文件。
对于测试窗口,在调试会话期间,源将被添加到当前已选择的源的后面。这样你可以
在测试窗口里包括源,随后在实际单步进入程序单元以前设置或移除断点。
Page 99

PL/SQL Developer 6.0 用户指南 99
添加调试信息到对象
在调试会话期间,如果你要查看或设置变量的值,包含这些变量的对象需要包含调试
信息。通过选择添加调试信息项目,你可以手工添加调试信息。这个菜单项目有一个
检验标志,它能显示出对象是否已经包含了调试信息。调试器的首选项部分包含了一
个选项,当程序单元被编译时,能自动地添加调试信息,这样你只需要为你没有开发
的程序单元使用这个项目。
重新编译参照对象
当你改变一个被其它程序单元或视图参照的对象时,这些参照对象将变为无效。重新
编译它们将使它们变为有效或者会发现一些不相容的问题,通过选择重新编译参照对
象项目,这会很容易地被实现。这将调出会立即被执行的编译无效对象窗口。关于这
个工具的更多信息在第 15.3 章能够找到。
测试程序单元
要测试一个程序单元(孤立的函数或过程、被打包的函数或过程、或者对象类型方
法),你可以使用测试脚本,其详细资料在第 4 章里有描述。一个测试脚本一般将
包含一个简单的函数或过程调用。在运行测试脚本以后,你需要设置输入参数,查看
输出参数和函数结果。你可以从浏览器里选择测试项目来创建这样一个测试脚本。
查询表和视图
要查看表或视图里的数据,请选择来自于弹出式菜单的查询数据项目。对于在浏览器
里当前已选的表或视图,一个带有 select 语句的 SQL 窗口就被创建了。如果你把
自动运行 SQL 窗口首选项设为允许,select 语句将立即被运行。
编辑表数据
如果你要编辑一个表里的数据,当表在浏览器里被选择时,你可以选择编辑数据项
目。一个带有包括 rowid 的 select 语句的窗口将被创建。如果你把自动运行 SQL
窗口首选项设为允许,select 语句将立即被运行。在记录被获取之后,SQL 窗口立
即进入编辑模式。
导出表
要导出表的定义和数据,请选择导出数据项目,这将为已选表调出导出表工具。详细
资料请看第 15.4 章。
允许和禁止触发器和约束
通过选择来自于弹出式菜单的允许或禁止项目,触发器和约束能从对象浏览器内部被
允许或禁止。被禁止的触发器和约束被显示为灰色。
运行作业
对于通过 dbms_job 包被提交的作业,通过选择来自于弹出式菜单的运行项目,你可
以明确地运行它。
Page 100

100 PL/SQL Developer 6.0 用户指南
允许和禁止进入队列和脱离队列
对于队列,通过选择来自于弹出式菜单相应的项目,你可以允许和禁止进入队列和脱
离队列操作。在菜单项目前面的检验标志指示了操作在当前是否被允许。
添加对象到自定义文件夹
要添加对象到自定义文件夹(请看第 13.3 章),请选择添加到文件夹项目,随后选
择一个来自于子菜单的文件夹。
恢复或清理对象
如果你使用的是 Oracle10g 或更新版本,你可以恢复或清理你先前删掉的表,前提
是如果这个特性在数据库里被允许的话。对于来自于回收站文件夹里的对象,你可以
选择清理来永远地删除掉表和它的数据,或者你可以选择恢复来在原来的名称下或者
在一个新的名称下恢复它。
13.2 浏览器过滤器
你可以定义过滤器以决定哪些对象在对象浏览器的系统文件夹里是可见的、这些对象
按什么顺序显示。位于浏览器顶部的选择列表允许你快速地在不同的过滤器之间切
换。
通过选择工具菜单里的浏览器过滤器项目或者通过按浏览器上方的过滤器按钮,浏览
器过滤器就能被定义。你可以在这个对话框里修改、创建和删除过滤器:
过滤器可以被整理出下列属性:
• 描述
这个描述在浏览器顶部的选择列表里被显示出来。