当前位置: 代码迷 >> SQL >> PL/SQL简要速查手册-声明部分
  详细解决方案

PL/SQL简要速查手册-声明部分

热度:58   发布时间:2016-05-05 14:50:55.0
PL/SQL精简速查手册-声明部分

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

?

%ROWTYPE

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

Exception_name EXCEPTION

PRAGMA EXCEPTION_INIT

PRAGMA EXCEPTION_INIT (exception_name,ora_number)

将异常处理与指定的Oracle错误号关联。

Oracle错误号通常是负数。如果想跟踪错误号ORA-02292,可使用-2292作为ora_number

?

  相关解决方案