Oracle 11g:PL/SQL基础(下)

日期: 2009-05-24 作者:Michael McLaughlin翻译:冯昀晖 来源:TechTarget中国 英文

PL/SQL中的赋值操作符是冒号加等号(“:=”),按行注释字符串的符号是单引号“’”。Date、numeric、string等关键字将在第三章阐述。你可以在Oracle的SQL*PLUS中调用执行匿名程序块。在SQL*PLUS中,“@”符号表示加载并执行一个脚本文件中的所有代码。

默认文件扩展名是“.sql”,当然你也可以用别的扩展名(你可以调用不带“.sql”扩展名的文件名)。下面是调用“substitution.sql”文件的示例: SQL> @substitution.sql Enter value for input: Henry……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

PL/SQL中的赋值操作符是冒号加等号(“:=”),按行注释字符串的符号是单引号“’”。Date、numeric、string等关键字将在第三章阐述。你可以在Oracle的SQL*PLUS中调用执行匿名程序块。在SQL*PLUS中,“@”符号表示加载并执行一个脚本文件中的所有代码。默认文件扩展名是“.sql”,当然你也可以用别的扩展名(你可以调用不带“.sql”扩展名的文件名)。下面是调用“substitution.sql”文件的示例:

SQL> @substitution.sql
Enter value for input: Henry Wadsworth Longfellow
old    3:     my_var VARCHAR2(30) := '&input';
new    3:     my_var VARCHAR2(30) := 'Henry Wadsworth Longfellow';
Hello Henry Wadsworth Longfellow
PL/SQL procedure successfully completed. 

  在以“old”开头的那一行,程序接收了一个替代变量,“new”开头那一行显示的是运行时的替代变量。赋给变量超过定义长度的字符串会引发异常。异常块会管理出现的错误。通用的异常类型可以截获任何出现的错误。你可以在“WHEN”代码块,使用通用错误处理类型“OTHERS”捕获所有异常。

  下面的“exception.sql”代码展示了异常代码块怎样管理赋值字符串长度超过了变量定义长度引发的异常。

  -- 代码来源:exception.sql。可以从出版社网站下载。


DECLARE
  my_var VARCHAR2(10);
BEGIN
  my_var := '&input';
  dbms_output.put_line('Hello '|| my_var );
EXCEPTION
  WHEN others THEN
    dbms_output.put_line(SQLERRM);
END;
/

  我们把匿名代码块字符串变量my_var的长度定义从30改成了10。现在诗人Henry Wadsworth Longfellow的姓名长度超过了变量定义的长度,给变量赋值时将会引发异常。下面的控制台输出显示了被引发并捕获的异常信息:


SQL> @exception.sql
Enter value for input: Henry Wadsworth Longfellow
old   4:    my_var  :=  '&input';
new   4:    my_var  :=  'Henry Wadsworth Longfellow';
ORA-06502:  PL/SQL: numeric or value error: character string buffer too small
PL/SQL procedure successfully completed.

  存储过程还支持:(1)在匿名代码块的执行段内嵌套匿名程序;(2)声明段的命名代码块可以依次包含相同类型的嵌套程序;(3)调用命名的存储过程程序。

  最外层的程序块控制整个程序的执行顺序,嵌套的程序块只控制它们内部的程序流程。不管是匿名程序块还是命名程序块,每一段程序内可以包含一个异常处理段。异常出现时,如果本段异常处理失败,异常就被抛出到本段外层的异常处理块,直到回到SQL*PLUS环境中。
 
  不管错误是由调用本地代码抛出,还是由调用命名存储过程块抛出,错误堆栈的管理一样的。错误被抛出后,会被加入到先进后出的队列(即堆栈)。

  我们已经探讨了PL/SQL程序块的基本结构和错误堆栈管理,程序块结构是PL/SQL编程的基础知识。

  下载《Oracle DataBase 11g PL/SQL编程》(PDF版),阅读本章的更多内容。

  关于Oracle 11g中PL/SQL的更多内容

  在我们的“专家问答”栏目提出关于Oracle 11g PL/SQL编程的问题,可以得到专家们的解答。

  在你第一次使用Oracle 11g之前,PL/SQL专家Steve Feurstein在这段博客视频中给我们讲解了他希望在最新版本数据库中PL/SQL编程的改进特性。那么Oracle实现这些改进了吗?

  您可以在我们的Oracle 11g特别报道里看到所有关于oracle 11g PL/SQL编程的信息。

相关推荐