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中国
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编程的信息。
翻译
相关推荐
-
解决创建动态表时的PL/SQL错误
创建的表不会动态地出现在编译时(compile time)里。任何模式对象的静态引用都需要在编译时中进行验证。
-
关于PL/SQL中to_date和to_char函数的几点解读
在使用Oracle数据库中PL/SQL的to_date 和 to_char函数时需要注意哪些问题,专家Dan Clamage给出了一些提示。
-
Oracle数据库中对BLOB数据的操作问题
在Oracle数据库中,如何插入并检索二进制大对象数据(BLOB)?专家建议先阅读一下“Oracle应用开发者指南”中的相关内容,然后通过实践积累知识。
-
DBA在使用SQL语句时需要注意的问题
Michael McLaughlin是Oracle 11g和MySQL 5.6开发者指南的作者,他在书中为Oracle数据库开发者提供了一些建议与帮助。