· 介绍
在编写PL/SQL程序时,可以定义变量和常量;在PL/SQL程序中包括有:
①标量类型
②复合类型
③参照类型
④lob
` 标量---常用类型
在编写PL/SQL块时,如果要使用变量,需在定义部分定义变量。
PL/SQL中定义变量和常量的语法如下:
①定义一个变长字符串
v_ename varchar2(10);
②定义一个小数 范围-9999.99~9999.99
v_sal number(6 , 2);
③定义一个小数并给一个初始值为5.4:=是pl/sql 的赋值号
v_sal2 number(6,2):=5.4
④定义一个日期类型的数据
v_hiredate date;
⑤定义一个布尔变量,不能为空,初始值为false
v_valid boolean not null default false ;
使用标量
在定义好变量后,就可以使用这些变量。这里需要说明的是pl/sql块为变量赋值不同于其它的编程语言,需要在等号
前加冒号(:=)
eg:
declare
t_tax_rate number(3,2):=0.03;
--用户名
v_ename varchar2(5);
--v_ename emp.ename%type;--此字段和表字段大小一样
v_sal number(7,2);
v_tax_sal number(7,2);
--执行
begin
select ename,sal into v_ename,v_sal from emp where empno=&no;
--pl/sql中可以使用+-*/
--计算所得税
v_tax_sal:=v_sal*t_tax_rate;
--输出
dbms_output.put_line('姓名:'||v_ename||' 工资:'||v_sal||' 交税:'||v_tax_sal);
end;
· 复合变量-------介绍
用于存放多个值的变量。主要包括:
①pl/sql记录
②pl/sql表
③嵌套表
④varray
记录:
相当于高级语言中的结构体/类
declare
type emp_record_type is record(
v_name emp.ename%type,
salary emp.sal%type,
title emp.job%type);
sp_record emp_record_type;
begin
select ename , sal , job into sp_record from emp where empno=7788;
dbms_output.put_line('员工名:'||sp_record.v_name);
end;
表:
相当于高级语言里的数组
declare
type sp_table_type is table of emp.ename%type
index by binary_integer;
sp_table sp_table_type;
begin
select ename into sp_table(0) from emp where empno=7788;
dbms_output.put_line('员工名:'||sp_table(0));
end;
--说明:
--sp_table_type 是pl/sql表类型
--emp.ename%type 指定了表的元素的类型和长度
--sp_table 为pl/sql表变量
--sp_table(0)则表示下标为0的元素
· 参照变量
参照变量是指用于存放数值指针的变量,通过使用参照变量,可以使得应用程序共享相同对象,从而降低占用的空间。在编写PL/SQL程序时,可以使用游标变量和对象类型变量二种参照变量类型。
· 参照变量 游标变量
使用游标时,当定义游标时不需要指定相应的selec t语句,但是当使用游标时需要指定select语句,这样一个游标就与一个select语句结合了,实例如下:
①请使用pl/sql编写一个块,可以输入部门号,并显示该部门所有员工姓名和他的工资。
②在1基础上,如果某个员工的工资低于200元,就增加100元