记录2012-5-15 9:00
(3)包
包用于逻辑组合相关的过程和函数,它由包规范和包体两部分组成。包规范用于定义公用的常量、变量、过程和函数,在SQL*Plus中建立报规范可以使用Create package命令。
包规范只包含了过程和函数的说明,而没有过程和函数的实现代码。包体用于实现包规范中的过程和函数,在SQL*Plus中建立包体可以使用Create package body命令。
当调用包的过程和函数时,在过程和函数名之前必须带有包名作为前缀(包名.子程序),而如果要访问其他方案的报,还必须要加方案名作为前缀(方案名.包名.子程序名).
4.触发器
触发器是指隐含执行的存储过程。当定义触发器时,必须要制定触发事件以及触发操作,常用的触发事件包括INSERT,UPDATE和DELETE语句,而触发操作实际是一个PL/SQL块。在SQL*Plus中建立触发器是使用Create trigger命令来完成的。
记录2012-5-15 15:00
3.2定义并使用变量
编写PL/SQL程序时,若临时存储数值,必须要定义变量和常量;若在应用环境和子程序之间传递数据,必须要为子程序制定参数。而在PL/SQL程序中定义变量、常量和参数时,则必须要为他们制定PL/SQL数据类型。在编写PL/SQL程序时,可以使用标量类型、复合类型、参照类型和LOB类型等四种类型。
3.2.1 标量变量
标量变量是指只能存放单个数值的变量。
标量数据类型包括数字类型、字符类型、日期类型和布尔类型,每种类型又包含相应的子类型。
1.常用标量类型
(1)语法
在PL/SQL块中定义变量和常量的语法如下:
identifier [constant] datatype [not null] [:=| default expr]
identifier :用于指定变量或常量的名称。
constant:用于指定常量。当定义常量时,必须指定它的初始值,并且其数值不能改变。
datatype:用于指定变量或常量的数据类型。
not null:用于强制初始化变量(不能为null).当指定not null选项时,必须为变量提供数据数值。
=:用于为变量和常量指定初始值。
default:用于为变量和常量指定初始值。
expr:用于指定初始值的PL/SQL表达式,可以是文本值、其他变量、函数等。
(2)定义标量变量示例
v_ename varchar2(10);
v_sal number(6,2);
v_balance binary_float;
v_tax_rate constant number(6,2):=5.5;
v_data date;
v_valid boolean not null default false;
(3)使用标量变量
需注意:在PL/SQL块中为变量赋值不同于其他编程语言,必须要在等号前加号(:=)
4.使用%Type属性
3.2.2 复合变量
复合变量是指用于存放多个值的变量。当定义复合变量时,必须要使用PL/SQL的复合数据类型。 PL/SQL包括PL/SQL记录、PL/SQL表、嵌套表以及varray等四种复合数据类型。