.Net程序员学用Oracle系列(18):PLSQL Developer 攻略

  • Post author:
  • Post category:其他


我是在用过几年 SSMS 之后才接触 PL/SQL Developer 的,一开始真的是非常不适应,感觉各种困难、各种麻烦、各种莫名其妙。当初我甚至怀疑过开发 PL/SQL Developer 的人是不是脑子有病,界面丑也就罢了,功能还那么难用,为啥不学学人家微软呢?哪怕是模仿一下子!然而,现实是当初我并不知道除了 PL/SQL Developer 之外,还有别的可以用来开发 Oracle 的工具。但为了把工作做好,也为了更高效、更自由的使用 PL/SQL Developer,我愣是硬着头皮把它所有菜单和工具栏几乎点了个遍。近几年也一直在用 PL/SQL Developer,时至今日,终有所获,我将通过本文把我所知道的一些好用的功能或技巧分享给大家。


注意

:本人用的是 PL/SQL Developer 7.0,下文将根据这个版本来讲述。如果你用的是高版本的,关系也不大,因为我曾用过一阵子 10.0 的,官方最新版 12.0 的功能介绍我也大致看过,发现也没太大差别。可能有些功能内部做了改进,也是为了支持新的环境或提升性能,新功能似乎不多。最直观的感受还是 UI 的美化,毕竟老版本的确实不太好看,有些人甚至就是因为这个而不用 PL/SQL Developer 的。


1、功能说明及使用技巧


1.1、对象浏览器

能够显示与 PL/SQL 开发相关的所有信息。可用它来获取对象描述,查看对象定义,为调试器创建测试脚本,启用或禁用触发器和约束,重新编译无效对象,查询或编辑表或查看数据,在对象源中搜索文本,将对象名称拖放到编辑器中,等等。由于对象浏览器中的文件夹特别多,如果没有一些使用技巧的话,操作效率可能会很低。


定义浏览器过滤器

:对象浏览器默认过滤的是“All objects”,这时候如果你直接去点开文件夹的话,且不说会有很多你本不想看的系统对象显示出来干扰你找寻用户对象,关键是往往要卡很久,如果数据库比较大的话甚至会卡死。所以有些人会在登进 PL/SQL Developer 之后先去把它改成“My objects”,像我这种懒人是难以养成这种糟糕的“好习惯”的。后来我找到一个技巧——在【工具】中点击【浏览器过滤器】或者点击“All objects”上的第 5 个图标,然后选中“My objects”,在下方【默认】选项前打勾并确定,等下次再登录进来默认就是“My objects”了。


定义浏览器文件夹

:对象浏览器中的文件夹有好几十个,但只有表、视图、存储过程、函数等少数几类数据库对象比较常用。有时候越是着急越是找不着,尽管也费不了多少时间,但像我这种急性子哪儿受得了啊!其实可以自定义浏览器文件夹,譬如修改文件夹颜色、排列顺序等,以便快速找到需要的对象。在【工具】中点击【浏览器文件夹】或者点击“All objects”上的第 6 个图标即可打开定义浏览器文件夹的窗口,然后选中常用的文件夹设置你喜欢的颜色确定即可。


更改对象的双击行为

:在对象浏览器中双击文件夹会展开对象,双击对象会展开对象的属性,可能你用习惯了感觉也没啥。但在大多数软件中,双击树节点肯定会弹出或进入详情窗口,而且一般找到对象也是想看它的定义而不是展开一堆文件夹(我相信这一点会让不少人大跌眼镜)。想要看对象定义还得通过右键菜单去找,右键菜单选项很多,一不小心还可能会点错,总之比较繁琐。其实可以更改默认的对象双击行为,步骤:【工具】→【首选项】→【用户界面】→【浏览器】→【双击行为】→改为查看说明和体确定即可。


查找数据库对象

:点击“My objects”上的第 4 个按钮,然后在文本查找输入框中输入“abc”并点击搜索,就能查到数据库中对象定义里包含“abc”的所有对象。实际试用中一般还会根据实际情况设置搜索模式、对象条件和对象类型,目的是为了更快的查到目标对象。


编译无效对象

:在更改数据库中的表或其它对象后,可能会导致相关的存储过程、函数、视图等编译失败,这时候通过对象浏览器人工逐一排查是比较笨的办法,因为 PL/SQL Developer 提供了编译无效对象的窗口功能。点击【工具】→【编译无效对象】即可看到当前数据库中所有编译未通过的对象,然后点击窗口工具栏中的“编译无效对象”按钮即可重新编译所有无效的对象,再点击后面的“刷新对象列表”,编译成功的对象会自动从窗口中消失。


1.2、SQL 窗口

SQL 窗口允许你输入任何 SQL 语句,并在网格中查看或编辑结果。可能很多人登进 PL/SQL Developer 之后会习惯性的新建一个 SQL 窗口,就像很多年前人们打开电脑的第一件事就是登 QQ 一样,这说明 SQL 窗口很常用,的确,大多数时候我们也就是写个查询语句然后执行看看查询结果。其实 SQL 窗口的功能远不止于此,下来我们来看几个使用 SQL 窗口的小技巧。


历史缓冲区

:可以从历史缓冲区中调用先前执行过的 SQL 语句。步骤:【编辑】→【重新调用语句】或者快捷键

Ctrl+E

,无论那种方式都得确保焦点在窗口(不限 SQL 窗口,其它类型窗口也行)中。


快速查看对象定义

:在按住

Ctrl

键的情况下,单击 SQL 窗口中的任何对象名(如表名、存储过程名等),即可查看该对象的定义。


设置关键字大小写

:假如设置了关键字大写,写完关键字之后它就会自动变成大写的。步骤:【工具】→【首选项】→【用户界面】→【编辑器】→【关键字大小写】→选择大写后确定即可。


设置 NULL 的颜色

:在结果集中 NULL 和空字符串都是看不见的,比较不好区分,这时候可以给 NULL 设置一种特殊的颜色以便查看。步骤:【工具】→【首选项】→【窗口类型】→【SQL 窗口】→点击 NULL 值单元格颜色前的区块选择自己喜欢的颜色并确定即可。


设置 SQL 语句外观

:默认情况下,用 SQL 窗口看长语句是很丑陋的,尤其是那斜体的注释,看着让人倒胃口,美观性差了 SSMS 十万八千里,好在我们可以自己更改这些糟糕的默认设置。

  • 设置关键字、注释、字符串等的颜色等的步骤:【工具】→【首选项】→【用户界面】→【编辑器】→在语法高亮下面选择你喜欢的颜色等确定即可。
  • 加亮编辑行/圆括号高亮:这两个功能在看长语句时非常有用,一个能让你时刻知道焦点在那一行,一个能让你迅速定位某个括号中的内容。步骤:【工具】→【首选项】→【用户界面】→【编辑器】→【其它】→勾上加亮编辑行/圆括号高亮确定即可。可能你会发现上面还有个显示行数的选项,但我遗憾的告诉你,勾上它也只会在 PL/SQL 编辑器中显示行号,而 SQL 窗口中并不会显示行号。
  • 设置字体:SQL 窗口的默认字体比较小,其实也可以自己改大一点。步骤:【工具】→【首选项】→【用户界面】→【字体】→【编辑器】→选择你喜欢的字体确定即可。


设置日期和时间的格式

:查询结果中日期和时间默认分隔符是斜线,如果你看不习惯也可以按照自己的喜好自定义格式。示例如图:

oracle_21


置换变量

:当查询被运行时,你可以在你的 SQL 文本里使用置换变量以允许用户输入数据。示例如图:

oracle_23

另外,如果你希望在 SQL 文本里使用 & 符号但不被解释为置换变量的话,那么用双 & 符号来代替即可。


实例查询

:SQL 窗口结果网格支持按实例查询模式搜索结果集中的特定记录。所谓按实例查询我的理解就是按条件查询,相当于用工具写 WHERE 条件,我个人觉得开发人员应该会更喜欢手写 WHERE 条件。示例如图:

oracle_20


复制查询结果

:在查询出结果后,可以通过单击结果集第一行第一列(也就是显示字段名那一行的第一列)来选中整个查询结果,然后按

Ctrl+C

复制查询结果,再然后就可以通过

Ctrl+V

把查询结果粘贴到 Excel、Word、记事本等任何可以输入文字的表格或编辑器里去。不仅如此,还可以通过拖选行来复制部分行,或者拖选列来复制部分列,甚至可以选择结果集中的某个区块,方法是将鼠标放在任何单元格的左边,等光标变成箭头形状时按住鼠标左键向任意方向拖选即可。


导出查询结果

:对于结果集巨大的查询(上万条记录或更多),首先查询数据到结果表格,随后把数据导出到文件里,这样做也许是不方便的。这也许会花很长时间和占用很多内存资源。这样还不如直接写结果集到导出文件里更有效。要做到这一点,你可以按结果集工具栏里的导出查询结果按钮。位置如下图:

oracle_22


图形

:要快速地显示一个在 SQL 窗口或报告窗口里查询的列数据的图示,你可以按结果集工具栏里的图形按钮来使用图形窗口。还可以通过后面的三角按钮来选择图形图、线形图、面积图或饼图等。位置如上图:


更新结果集

:在

利用 ROWID 更新数据

中已经讲过一种更新结果集的语法。其实还有另一种更新结果集的语法:

SELECT ... FOR UPDATE

,也就是在查询语句后面加

FOR UPDATE

。不过这种更新方法会将所有已选的记录锁住,所以一般来说用 ROWID 使结果集可更新是更好的选择。


执行 SQL 语句

:一个 SQL 窗口中可以写多条语句,你拖选某一段,然后点击执行按钮或按

F8

就会执行那一段语句。其实还可以自动选择语句,这样你按

F8

的时候,它就会自动选择光标所在语句块并执行。步骤:【工具】→【首选项】→【窗口类型】→【SQL 窗口】→勾选自动选择语句并确定即可。


查看执行计划

:选择一条语句按

F5

或者通过工具菜单又或者是右键菜单点击执行计划即可查看。

其实 SQL 窗口的功能非常多,本节也只介绍了我个人认为相对实用的一些,还有很多个别时候会很有用的功能,如查看单个记录、连接查询、标准查询等,有兴趣的读者可参考《PL/SQL Developer 用户指南》进一步研究。


1.3、测试窗口

测试窗口让你可以调试任何程序单元,而不对其进行任何修改,包括触发器和对象类型。测试窗口集成的调试器提供了运行、单步进入、单步跳过、单步退出、运行到下一个异常、断点、查看和设置变量、查看调用堆栈等功能。


调试存储过程/函数

:存储过程/函数是比较方便调试的,直接在对象名上【右键】然后点击【测试】即可进入测试窗口,而且 PL/SQL Developer 会自动生成测试脚本,或者你自己新建个测试窗口,然后自己写测试脚本也是可以调试的。点测试窗口左上角的那个大大的黄色按钮或者按

F9

即可开始调试,紧接着后面的几个按钮是你调试过程中会用到的,也可以按快捷键,不过说实话 PL/SQL Developer 默认的快捷键真心不好用,尽管可以自己改,但毕竟需要调试 SQL 的时候并不多,懒得去讨那个麻烦,所以我平常一般都是点上面那几个按钮来调试。


调试触发器

:触发器比较特殊,你会发现它的右键菜单上没有调试选项,但可以通过自己新建调试窗口并自定义调试脚本来调试触发器。至于测试脚本要怎么写,你可以这么来理解,假如某个触发器是在向 A 表添加记录时被触发,那么你的脚本里就写一条向 A 表插入记录的

INSERT

语句,然后按

F9

开始调试,执行插入语句的时候断点就会自动进入触发器内。


概览图

:可在测试窗口里访问概览图,在运行测试脚本前,按一下测试窗口工具栏里的“创建概览图报告”,再按

F8

(注意:按

F9

是无效的)之后就可以转到概览图页查看运行报告了。示例如图:

oracle_24


1.4、命令窗口

命令窗口的功能与 SQL Plus 的功能相似,SQL Plus 支持的命令一般命令窗口也支持,且在脚本编辑方面比 SQL Plus 要强大的多,所以如果你已经开着 PL/SQL Developer 的话,就没必要再去开 SQL Plus 了。具体命令的用法可参考

SQL Plus 实用命令参考


1.5、图表窗口

图表窗口允许你创建选定对象的图示,这样你就可以清晰地看到应用程序的数据库对象和它们之间的关系。你可以添加所有相关的对象类型包括它们之间的关系到一个图表,表之间的外键关系被自动地包括在内。右击一个对象提供了访问所有对象的功能,双击一个对象将激活针对对象类型的默认操作。

个人感觉图表窗口最大的好处就是可以直观的看到一个对象定义,譬如你想看某张表,只需要在对象浏览器中找到它并把它拖拽到图表窗口中即可。


1.6、报告窗口

PL/SQL Developer 提供了内置的报告功能和大量标准报告,而且你还可以方便的通过报告窗口创建自定义报告。自定义报告将被保存在报告文件中,进而包含在报告菜单内。这样,运行你自己经常使用的自定义报告就非常方便了。

说真的,报告窗口此前我还真没用过,不过我大概试了试,估计 DBA 会更喜欢这个功能一些。报告菜单中已经包含了二十几个标准报告,可以用来了解当前数据库运行状况,而且报告内容还可以很方便的通过报告右边的按钮导出为 Excel 或 Html。这样一来的话倒是可以在运营部门需要数据的时候,通过报告窗口生成数据报告,然后导出给他们。


1.7、右键菜单

在 PL/SQL Developer 中的 SQL 窗口、测试窗口、命令窗口、程序窗口等几乎每一个文本编辑器窗口中,在任何对象名上右键,都会弹出一个包含操作对象命令的菜单,也就是本节要说的右键菜单。

不同类型对象的右键菜单也有所不同,即使菜单名相同弹出来的窗口也可能会不同,由于数量巨多,本节不会逐一分析,而且常用的一些右键功能试用起来也很简单,有兴趣的读者可多多尝试。下面将讨论如何应对使用过程中可能会遇到的几种特殊情况:

  • 对象类型识别错误,导致弹出的右键菜单也不对,这时候可以在对象名前加个分号,再右键 PL/SQL Developer 就能正确判断出对象的类型了。
  • 无法弹出跨数据库访问对象的右键菜单,这时候需要先选中整个对象名称(包括对象前的点和 Schema 名),再来右键即可弹出右键菜单。
  • PL/SQL Developer 还为 SQL 语句块提供了方便使用的右键菜单,使用方法是先选中一段 SQL 语句,然后在选中区域内右键即可。


1.8、快速登录技巧

在 SSMS 登录界面上有的“Windows 身份验证”选项和“记住密码”两个功能,任何一个都可以让程序员不必每次都要输入密码才能登录数据库,而从 PL/SQL Developer 的登录界面来看,它这些似乎都没有。其实也不尽然,PL/SQL Developer 只是藏得比较深而已,下面我们来看几个快速登录的小技巧:


记住登录历史和登录密码

:【首选项】→【Oracle】→【登录历史】→【定义】→勾选“存储历史”和“带口令存储”后确定,从下次登录开始就不用再输入密码了。实例如图:

oracle_25

可能有朋友会发现关掉 PL/SQL Developer 再次打开,口令那里还是空的,并没记住密码。其实不然,只是 PL/SQL Developer 的操作方式不同寻常而已,具体请看下图:

oracle_26


不配置tnsname直接登录

:一般来说,我们都是先装好 Oracle 客户端,然后配置 tnsname,再打开首选项配置连接,最后才能通过 PL/SQL Developer 登录数据库,如果需要连很多数据库,就得配很多 tnsname。但有时候我们只是想临时连一下某个环境,譬如项目的测试环境有很多个,急需帮测试人员解决某个环境的问题,这时候还要先找到

tnsnames.ora

文件,配置一通之后才能去连,这就比较繁琐了。后来一个偶然,我发现不配置 tnsname 也能直接连数据库,那一刻我真的是欣喜若狂。其实也就是登录写法稍有不同罢了,用户名和口令还是一样的输入,数据库那一栏手动写上要登录的IP和端口以及实例名即可,语法实例:

host:port/sid
127.0.0.1:1521/orcl(登录本机 orcl 数据库的写法,1521 是 Oracle 默认端口,只要安装时不去改,一般就还是这个端口)


打开即登录

:在 PL/SQL Developer 的安装目录里有个名为

plsqldev.exe

的文件,也就是启动 PL/SQL Developer 的文件。一般都是在桌面上给它创建一个快捷方式,然后通过快捷方式来启动 PL/SQL Developer,其实它还可以接受命令行参数,我们可以在快捷方式的目标栏按

username/password@tnsname

的格式指定

userid

参数值,然后双击快捷方式就会直接登录进去,连登录界面都不会弹出来了。示例如图:

oracle_27

这种登录方式应该是最简单快捷的,同时缺点也是很明显的,因为想登录别的数据库还得再切换。当然,如果你一般只登某一个数据库的话,那这种方式最合适不过了。


1.9、其它

上文已经讲述了 PL/SQL Developer 中,我个人觉得相对重要或好用的一些功能或技巧。本节将再补充几个对开发人员而言没那么重要或我个人不太喜欢的功能简述。


窗口列表

:顾名思义,管理(已打开)窗口的工具,我发现有些人对这个功能是重度依赖,譬如曾有个同事只是问我个 SQL 写法的问题,结果愣是把我 PL/SQL Developer 的窗口列表调出来之后,才把问题说明白。我个人不那么喜欢这个功能,因为我不喜欢开太多窗口,不用的窗口我会及时关掉。当然,如果你跟我那位同事一样喜欢开很多个窗口,那么窗口列表功能或许对你很有帮助。打开步骤:【工具】→【窗口列表】。


PL/SQL 美化器

:我这个人比较注重代码美,一般我自己就会把语句排版的很整齐。但我不太喜欢这个工具的默认格式,尽管可以自定义,但比较繁琐。其实如果仅仅用在数据库中也还好,但要把美化后的语句放到程序中可能就很不美了。譬如我以前招的一个人,他就很喜欢用这个工具,有次他写了个列表查询方法,我一看 200 多行就点开仔细看了下,结果发现仅 SQL 语句就占了近 100 行,一屏都显示不完,而且大部分行前面有很多空格,这样一来,日后维护这个方法的人看着就很累了,改起来也很不方便,所以说要放到程序代码中的 SQL 语句还是不用 PL/SQL 美化器为好。打开步骤:【编辑】→【PL/SQL 美化器】,或者直接点工具栏里的“PL/SQL 美化器”按钮。


Oracle 信息窗口

:该窗口中包含当前 PL/SQL Developer 的版本、命令行参数、连接参数等参数信息和 TNS 名等信息。打开步骤:【帮助】→【关于】→【附加信息】。


2、总结

《PL/SQL Developer 用户指南》有数百页,换句话说 PL/SQL Developer 的功能非常多,本文也只是我参照个人的使用习惯和需要做的个简要概括和总结。还有很多功能我也不曾或很少使用过,譬如:比较用户对象、比较表数据、导出用户对象、导出表、导入表、文本导入器、ODBC 导入器、数据生成器、测试管理器等实用功能或工具,以及查询设计器、模版列表等傻瓜化编码工具,有兴趣或有需要的朋友可参考《PL/SQL Developer 用户指南》自行研究。


本文链接

:http://www.cnblogs.com/hanzongze/p/oracle-plsqldeveloper.html


版权声明

:本文为博客园博主


韩宗泽


原创,作者保留署名权!欢迎通过转载、演绎或其它传播方式来使用本文,但必须在明显位置给出作者署名和本文链接!本人初写博客,水平有限,若有不当之处,敬请批评指正,谢谢!

转载于:https://www.cnblogs.com/hanzongze/p/oracle-plsqldeveloper.html