3.2. 复合变量
复合变量是指用于存放多个值的变量。当定义复合变量时,必须要使用PL/SQL的复合数据类型。
PL/SQL包括PL/SQL记录、PL/SQL表、嵌套表以及varray等四种复合数据类型。
2.PL/SQL表
当使用PL/SQL表时,必须首先在定义部分定义PL/SQL表类型和pl/sql表变量,然后再执行部分中
引用该PL/SQL表变量,示例如下:
--注:ename_table_type为PL/SQL表类型;emp.ename%type指定了PL/SQl表元素的数据类型和长度
;
--ename_table为pl/sql表变量,ename_table(-1)则表示下标为-1的元素
declare
type ename_table_type is table of emp.ename%type
index by binary_integer;
ename_table ename_table_type;
begin
select ename into ename_table(-1) from emp where empno=7788;
dbms_output.put_line('雇员名:'||ename_table(-1));
end;
3.2.5 非PL/SQL变量
非在PL/SQL块中引用非PL/SQL变量时,必须要在非PL/SQL变量前加冒号(":")
1.使用SQL*Plus变量
在PL/SQL块中引用SQL*Plus变量时,必须首先使用variable命令定义变量,而如果要在SQL*Plus
中输出变量内容,则需要使用print命令。
示例:
SQL> var name varchar2(10)
SQL> begin
2 select ename into :name from emp where empno=7788;
3 end;
4 /
PL/SQL 过程已成功完成。
SQL> print name;
NAME
--------------------------------
SCOTT
2012-5-15 记录23:52
3.3 编写PL/SQL代码
1.分隔符:是指具有特定含义的单个符号或组合符号。
单符号分隔符执行算术运算;组合分隔符执行赋值操作(:=)和比较操作(>=) 等
符号 含义
% 属性提示符
’ 字符串分隔符
. 组件分隔符
: 非PL/sql变量提示符
@ 远程数据库访问操作符
:= 赋值操作符
|| 连接操作符
<< 标号分隔符开始
>> 标号分隔符结尾
" 双引号变量分隔符
** 幂操作符
2.标识符用于指定PL/SQL程序单元和程序项的名称。
定义规则:
1.当使用标识符定义变量、常量时,每行只能定义一个标识符。
2.当使用标识符定义变量、常量时,标识符名称必须以A-Z,a-z开始,如果要其他字符开始,
那么必须要使用双引号引住。
3.当使用标识符定义变量、常量时,标识符名称只能使用A-Z,a-z,0~9,_,$和#,如果要
其他字符开始,那么必须要使用双引号引住。
4.标识符不能使用Oracle的关键字。
3.文本
在Oracle 10g之中,如果字符串文本包含单引号,那么既可以使用原格式赋值,也可以使用其他
分隔符([]、{}、<>等)赋值。注意,如果要使用分隔符[]、{}、<>为字符串赋值,那么不仅需要在
分隔符前加单引号,而且需要带有前缀q.
示例: string var=q'[I'M a sting]'
3.3.2 PL/SQL代码编写规则
1.标识符命令规则
a.当定义变量时,建议使用v_作为前缀,例如v_sal
b.当定义常量时,建议使用c_作为前缀,例如c_rate
c.当定义游标时,建议使用_cursor作为后缀,例如emp_cursor
d.当定义例外时,建议使用e_作为前缀,例如e_error
e.当定义PL/SQL表类型时,建议使用_table_type作为后缀,例如sal_table_type
f.当定义PL/SQL记录类型时,建议使用_record_type作为后缀,例如emp_record_type
g.当定义PL/SQL记录变量时,建议使用_record作为后缀,例如emp_record
2.大小写规则
采用大写格式:SQL关键字、PL/SQL关键字、数据类型
采用小写格式:标识符、参数、数据库对象和列
5.在PL/SQL块中使用的SQL函数