PL/SQL精简速查手册-声明部分
???? 块头???????? [可省略]
IS
???? 声明部分???????? [可省略]
BEGIN
???? 执行部分
EXCEPTION
???? 异常部分 [可省略]
END;
?
{ {PROCEDURE|FUNCTION}? name? IS| <<name>> }
在此处声明块中使用的变量、游标、类型、本地过程和函数。
变量:
variable_name type [NOT NULL] [:=initial_value]
常量:
constant_name CONSTANT type :=initial_value
数据库列类型变量:
variable_name [schema.] table_name.column_name%TYPE
已有变量类型变量:
variable_name variable1%TYPE
?
String/Varchar2,Number,Boolean,Date
?
TYPE type_name IS RECORD(
variable_name type [NOT NULL] [:=initial_value]
[,variable_name type [NOT NULL] [:=initial_value]...]
)
?
声明记录类型变量:
record_name type_name;
?
通过使用INTO语句,可是使记录类型的变量成为SELECT语句的目标。
?
记录类型变量引用字段:
record_name.variable_name
?
record_name [schema.]table_name%ROWTYPE
通过%ROWTYPE可取代类型声明,直接将变量声明为记录类型变量。
?
类似于JavaScript 中的数组Array。
TYPE table_name IS TABLE OF
{type | variable%TYPE | [schema.]table_name%ROWTYPE}
INDEX BY BINARY_INTEGER
?
表类型声明的结果是具有两列的内存表:
KEY (总是 BINARY_INTEGER)
VALUE(在表声明中定义的类型)
?
声明索引表类型变量
variable_name table_name;
使用索引表类型变量
variable_name(key);
?
方法
返回值
描述
COUNT
NUMBER
返回表中的行数
DELETE
?
从表中删除所有行
DELETE(x)
?
从表中删除具有键x的行
DELETE(x,y)
?
删除表中有x~y之间的键的所有行
EXISTS(x)
BOOLEAN
返回表中是否具有键为x的行。
FIRST
BINARY_INTEGER
返回表中的最小的键值
LAST
BINARY_INTEGER
返回表中的最大的键值
NEXT(x)
BINARY_INTEGER
返回表中比提供的键要大的最小的行键
PRIOR(x)
BINARY_INTEGER
返回表中比提供的键要小的最小的行键
注:DELETE方法只可用于Oracle8或更高版本中,以前版本中没有可以删除行的方法。
企业版独有
TYPE vartype_name IS {VARRAY | VARYING} (maxsize) OF data_type [NOT NULL]
?
?
示例:
DECLARE
--声明可变数组类型
TYPE num_array IS VARRAY (100) OF NUMBER ;
--声明数组变量
num1 num_array;
num2 num_array;
BEGIN
--调用构造方法
num1 := num_array();
num2 := num_array(1,2,3);
?
--每增加一个值都需先扩展数组
num1.extend;
num1(1) :=1; --与很多高级语言不同,其索引从1开始
?
num2.extend ;--扩展不可超出最大声明大小
num2(4):=4;
END;
?
?
方法
返回值
描述
COUNT
INTEGER
返回数组中的条目数
DELETE
?
从数组删除所有条目
DELETE(x)
?
从数组删除索引为x的条目
DELETE(x,y)
?
删除数组索引在x~y之间的所有条目
EXISTS(x)
BOOLEAN
返回数组是否具有索引为x的条目
FIRST
INTEGER
返回数组的最小的索引值
LAST
INTEGER
返回数组的最大的索引值
NEXT(x)
INTEGER
返回数组比提供的索引要大的最小的索引
PRIOR(x)
INTEGER
返回数组比提供的索引要小的最小的索引
TRIM
?
删除具有最大索引值的条目
TRIM(x)
?
从数组尾部删除x(可为0)个条目
EXTEND
?
在数组中增加一个条目
EXTEND(x)
?
在数组中增加x个条目
EXTEND(x,y)
?
在数组中增加x个条目,值为索引y对应的条目值
LIMIT
INTEGER
返回数组最大声明大小
?
CURSOR cursor_name IS
select_statement
[FOR UPDATE [OF column[,... ]] [NOWAIT]
?
使用请参见执行部分介绍。
Exception_name EXCEPTION
PRAGMA EXCEPTION_INIT (exception_name,ora_number)
将异常处理与指定的Oracle错误号关联。
Oracle错误号通常是负数。如果想跟踪错误号ORA-02292,可使用-2292作为ora_number。
?