Oracle PL/SQL开发利器-Toad应用总结(一)-PL/SQL Program基本编写、调试

时间:2021-12-29 01:13:50
Oracle PL/SQL开发利器-Toad应用总结(一)-PL/SQL Program基本编写、调试 


原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://ckitpro8086.blog.51cto.com/3653012/770589


使用Toad进行Oracle PL/SQL Program的编写及调试需掌握如下视图应用:

(1)Schema Broswer    模式浏览器(Schema Browser)可以快速访问数据字典,浏览数据库中的表、索引、存储过程。Toad 提供对数据库的快速访问,使用极为方便,用户界面简洁,结构安排合理。当点击一个单独的数据库对象,Toad 立即显示此对象的详细信息。例如,点一个数据库的表,所有和此表相关的索引、约束、存储过程、SQL 语句、表中的数据以及和其他表的相互引用关系都在同一界面显示出来。所有针对数据库对象的操作都可以在Schema Browser 一个窗口中进行。  开发人员查询Oracle数据库当前用户连接的所有对象信息,开发中可由这里浏览各种对象,即Procedure、Function、Package,单击某个对象即走读相关代码,右击可实现重新编译等操作,双击某对象进入对应的开发编辑视图,可进行修改、调试、语句跟踪性能分析等操作; (2)SQL Editor     SQL 编辑器(SQL Editor)的主要功能是编辑、运行和调整SQL 语句。TOAD 的高级编辑窗口包括众多的特性来提高开发人员编写SQL 语句的产品化程度。例如,简单地生成代码模板,在编写SQL 前自动发现包的内容和列的名字等等。SQL 编辑器包括一个编辑窗口和运行结果窗口,允许开发人员在编辑的过程中测试运行结果。SQL 编辑器中不仅包括标准的编辑命令,也包括一些增强的功能,如快速查询表中的字段、将SQL 语句的内容格式化等等。这个窗口可以处理大到4GB 的内容,对大的开发项目来说非常有用。便捷的书签可以让开发人员非常容易地找到相关位置。在运行结果窗口可提供用户定义的配置功能,支持LONG 和LONG RAW 列,可以将数据卸出到磁盘、打印数据、编辑数据等等。  (3)Procedure Editor      存储过程编辑器(Procedure Editor)的主要功能是编辑、编译、测试、调试存储过程和触发器。TOAD 提供语法标识、错误标识和其他很多易于使用的功能,如在弹出窗口显示表名、列名和Oracle 函数。和其他的 PL/SQL 编辑工具不同,TOAD 允许在一个文件中操作多个数据库对象,可以编译一个对象、编译多个对象、编译到当前光标、从光标开始编译。在运行出现错误时,存储过程停止到有问题的语句。用户可以使用快捷方式或模板来快速编写PL/SQL,也可以根据需要生成自己的模板。使用Toad 可以非常方便地进行编辑工作,可如设置书签、取消注释、格式化SQL 语句等等。  写两个实例如下:
  •   Procedure示例:
 
  
  
  1. CREATE OR REPLACE PROCEDURE SCOTT.calc_totalTemp (fudge_factor_in IN NUMBER) 
  2. IS 
  3.   subtotal NUMBER := 0; 
  4.   PROCEDURE compute_running_total (increment_in IN PLS_INTEGER) 
  5.   IS 
  6.   BEGIN 
  7.   subtotal := subtotal + increment_in * fudge_factor_in; 
  8.   END
  9. BEGIN 
  10.   FOR month_idx IN 1..12 
  11.   LOOP 
  12.     compute_running_total (month_idx); 
  13.   END LOOP; 
  14.   DBMS_OUTPUT.PUT_LINE('Fudged total for year: ' || subtotal); 
  15. END
  •  Function示例

 

  
  
  1. CREATE OR REPLACE FUNCTION SCOTT.wordcountTemp (str IN VARCHAR2) 
  2. RETURN PLS_INTEGER 
  3. AS 
  4. /* words PLS_INTEGER := 0; ***Commented out for intentional error*** */ 
  5. words PLS_INTEGER := 0; 
  6. len PLS_INTEGER := NVL(LENGTH(str),0); 
  7. inside_a_word BOOLEAN; 
  8. BEGIN 
  9. FOR i IN 1..len + 1 
  10. LOOP 
  11. IF ASCII(SUBSTR(str, i, 1)) < 33 OR i > len 
  12. THEN 
  13. IF inside_a_word 
  14. THEN 
  15. words := words + 1; 
  16. inside_a_word := FALSE
  17. END IF; 
  18. ELSE 
  19. inside_a_word := TRUE
  20. END IF; 
  21. END LOOP; 
  22. RETURN words; 
  23. END
  (4)PL/SQL Debugger     Toad 提供强大易用的PL/SQL 调试功能,可以节省开发人员在大型项目中用于开发和测试的宝贵时间,提高应用开发的质量。在存储过程开发的过程中,Toad 可以逐行编辑、调试和运行代码。运行时可以根据需要输入参数,观察相关参数的变化来检查存储过程的正确性。在调式过程中,Toad 可以通过窗口显示所有的断点、参数, 调用堆栈和输出参数。使用Toad,非常容易检测到存储过程的错误,开发人员可以一步一步运行PL/SQL 语句来识别问题。调试会话可以和其他程序会话同时进行。    我在刚开始使用Toad对Procedure和Function进行调试的时候,出现了调试按钮置灰无法进行调试、点击调试按钮后程序直接跑完没有在断点处停住等情况,在网上查了很久,大都对这个问题都没有人进行正确的解决;    解决Toad调试的问题的方法如下:    首先确认一点:你当前Toad的用户连接是否为Sys、System等DBA用户,如果是的话,就会出现Toad Debug按钮是可用的,断点也可以设置,但是程序直接跑完的情况,应该是Toad不支持DBA用户直接调试PL/SQL程序;    然后,将用户连接改为其他用户例如Scott重连Toad,当Toad在此用户连接下,直接进行调试PL/SQL是不行的,因为该用户默认是没有Debugger权限的,在此情况下Debug按钮也是置灰的;    然后,执行如下语句,(假设当前Toad连接Oracle的用户为Toad): 
  
  
  1. grant debug connect session to scott; 
  2. grant debug any procedure to scott; 
  最后,就跟在Eclipse Debug Java程序差不多了,即设置断点,点击Toad上的按钮Execute PL/SQL with Debugger,那就开始调试吧!   (5)Connection Color-Coding  Toad 允许同时连接多个数据库,便于在多个数据库之间进行切换和比对。但是这样也增加了在数据库上进行误操作的风险。Connection Color-Coding 允许用户在定义一个新的数据库连接时,为该连接指定一种颜色,以便作为醒目提醒。

 

本文出自 “中子星” 博客,请务必保留此出处http://ckitpro8086.blog.51cto.com/3653012/770589