PL/SQL编译和运行时系统是一个引擎,用于编译和运行PL/SQL单元。引擎可以被安装在数据库中或应用程序开发工具中,例Oracle Forms。
在任何环境中,PL/SQL引擎接受有效的PL/SQL单元作为输入。该引擎运行过程语句,而将SQL语句发送给SQL引擎。

通常,数据库处理PL/SQL单元。当一个应用程序开发工具处理PL/SQL单元时,它把它传递给本地的PL/SQL引擎。如果PL/SQL单元不包含SQL语句,则本地引擎处理整个PL/SQL单元。如果应用程序开发工具可以受益于条件和循环控制,这是非常有用的。例,Oracle Form应用程序通常会使用SQL语句来测试输入域的值并进行简单的计算。通过使用PL/SQL而不是SQL,这些应用可以避免对数据库的调用。
PL/SQL单元是:PL/SQL匿名块、函数、库、包、包体、过程、触发器、类型、类型体。
PL/SQL单元受PL/SQL编译参数(是一系列数据库初始化参数)的影响。不同的PL/SQL单元,例如包规范和包体,有不同的编译参数设置。
下表是PL/SQL编译参数的汇总,如果想显示针对特定的PL/SQL单元或所有PL/SQL单元的这些参数的值,可以查看视图ALL_PLSQL_OBJECT_SETTINGS。
|
plscope_settings |
控制编译时集合、交叉引用和PL/SQL源代码数据的存储。 |
|
plsql_ccflags |
允许对每个PL/SQL单元单独地控制条件编译 |
|
plsql_code_type |
指定PL/SQL单元的编译模式(INTERPRETED 和NATIVE) 如果plsql_optimize_level < 2: n 编译器产生解释代码,而不管plsql_code_type的设置; n 如果指定native,则编译器警告native被忽略。 |
|
plsql_optimize_level |
指定编译PL/SQL单元的优化等级。等级越高编译器进行越多的优化。 plsql_optimize_level = 1,建议PL/SQL编译器产生和存储为PL/SQL调试器使用的代码。 |
|
plsql_warnings |
启用和禁止PL/SQL编译器产生的警告信息,并指定哪些警告信息被显示为错误。 |
|
nls_length_semantics |
允许使用字节长度和字符长度语义创建char和varchar2列。 |
注意:PLSQL_DEBUG编译参数已经不建议使用了,如果编译PL/SQL单元进行调试,可以设置plsql_optimize_level = 1。
上表中参数的编译时期的值与每个PL/SQL单元的元数据存储在一起,这意味着当你显式地重新编译这些PL/SQL单元时,可以重用这些值。
存储的PL/SQL单元是使用create or replace语句创建的,匿名块不是存储的PL/SQL单元。
为了显式地重新编译存储的PL/SQL单元并重用它的参数值,必须使用带有compile和reuse settings子句的alter语句。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1102567/ ,如需转载,请注明出处,否则将追究法律责任。