|
|
51CTO旗下网站
|
|
移动端

2.3.3 运行PL/SQL程序

《Oracle PL/SQL程序设计(第6版)(上下册)》第2章创建和运行PL/SQL代码,本章将展示如何在一个最基本的层面上(使用SQL*Plus)完成上述任务,同时对这些细小差别进行大致的讲述。本节为大家介绍运行PL/SQL程序。

作者:方鑫 译来源:人民邮电出版社|2017-09-06 19:06

2.3.3 运行PL/SQL程序

好,现在我们继续(掌声响起来!),在SQL*Plus中输入一个小PL/SQL程序:

  1. SQL> BEGIN  
  2. 2 DBMS_OUTPUT.PUT_LINE('Hey look, ma!');  
  3. 3 END;  
  4. 4 /  
  5. PL/SQL procedure successfully completed.  
  6. SQL> 

糟糕,此程序的目的是调用一个PL/SQL的内置小程序返回一些文本,虽然程序运行顺利结束,但我们期待的文本输出却不见踪影,SQL*Plus有时会莫名其妙地“吞掉”类似的输出。为了让结果能正确显示,我们必须使用一个SQL*Plus命令来打开SERVEROUTPUT参数:

  1. SQL> SET SERVEROUTPUT ON  
  2. SQL> BEGIN  
  3. 2 DBMS_OUTPUT.PUT_LINE('Hey look, Ma!');  
  4. 3 END;  
  5. 4 /  
  6. Hey look, Ma!  
  7. PL/SQL procedure successfully completed.  
  8. SQL> 

通常,我会把打开SERVEROUTPUT的命令放到我的启动文件里(参见2.3.6节中“在启动时自动加载用户自定义环境”的内容),这样这个开关就会常开,直到以下情况发生:

我们断开、退出或用其他方式终结了当前会话。

显式地将SERVEROUTPUT参数设置为OFF。

Oracle数据库因为我们的主动请求或某种编译错误而丢弃的会话的状态(参见20.2.5节的内容)。

一直到Oracle数据库9i第2版,如果我们通过CONNECT命令重新连接数据库,SQL*Plus会自动在CONNECT之后重新运行启动文件。

如果我们在控制台或类GUI的SQL*Plus环境下输入一条SQL或PL/SQL语句,SQL*Plus会为第一行之后的每一行分配一个数字行号。这样做有两个好处:首先,我们可以在内置的行编辑(你总是有一天会用到)里指定要编辑的行;其次,如果数据库检测到代码存在错误,它也会在错误报告中给出行号。在使用过程中,我们会充分体会到它的益处。

通过一个斜杠“/”(请见前面例子的第4行),我们告知SQL*Plus一个语句结束了,虽然在大多数情况下不会有什么危害,但斜杠“/”有一些重要特点需要注意:

斜杠“/”的含义是“执行最新录入的语句”,而不管最新录入的是SQL代码还是PL/SQL代码。

斜杠“/”是SQL*Plus里的命令,它不属于PL/SQL语言,也不属于SQL语言。

它必须自己单独一行,在这一行中,不允许有其他命令存在。

在Oracle数据库9i之前的SQL*Plus版本中,如果我们无意中在斜杠“/”前面加了个空格,它就不能工作了!但自从Oracle数据库9i之后,SQL*Plus会自动忽略前面的空格。在任何数据库版本中,斜杠“/”之后的空格都没有什么影响。

作为一个简化方法,SQL*Plus提供了一个EXECUTE命令,可以省略BEGIN、END和斜杠“/”的输入。因此,下面的语句等价于我们刚才的示例:

  1. SQL> EXECUTE DBMS_OUTPUT.PUT_LINE('Hey look, Ma!') 

语句结尾的分号是可选的,作者更喜欢省略它。对于大多数SQL*Plus命令而言,EXECUTE可以简写,并且与大小写无关,所以大家都喜欢简略成这样:

  1. SQL> EXEC dbms_output.put_line('Hey look, Ma!') 

喜欢的朋友可以添加我们的微信账号:

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

SQL应用与开发标准教程

本书主要介绍了SQL的数据库应用和开发技术,内容涉及关系数据库和SQL概述,SQL环境,SQL对于数据表的操作,数据库查询知识,SQL数据的修改...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊