PL/SQL
简介
PL/SQL 块是在 SQL 语言之上发展起来的一种应用,可以集中的处理各种复杂的 SQL 操 作
由过程语言与结构化查询语言构成
语法
基本组成
declare: 声明部分
begin
执行部分
exception 捕获异常
end;
plsql分为了声明部分、执行部分、异常处理部分
可以使用如下命令:
- 数据操纵命令
- 事务控制命令
- 游标控制
- SQL 函数和 SQL 运算符
变量
PLSQL中的变量类型:
- 普通数据类型 char varchar2 date number
- 特殊变量类型 引用型变量 记录型变量
声明方式
变量名 变量类型(变量长度)
普通变量
赋值方式
- 直接赋值 :=
- 语句赋值 select xxx into xxx
实例
declare
v_sno Students.Sno%Type;
v_sname Students.Sname%Type;
v_ssex char(1) ;
begin
select Sno,Sname,Ssex into v_sno,v_sname,v_ssex from Students where Sage=21;
dbms_output.put_line(‘学号:’||v_sno||‘姓名:’||v_sname||‘性别:’||v_ssex);
end;
%type–表示取用%前面的字段的类型
当前语句只能输出一条,当查询语句结果为多行时,报错;可以通过在select语句之后加入:
exception
when too_many_rows then
dbms_output.put_line(‘返回多行’);
可以使程序更完整。
当select语句查询为空时也会报错,可以使用如下错误处理语句:
exception
when NO_DATA_FOUND then
dbms_output.put_line(‘没有对应的信息’);
特殊变量
引用型变量
就是上文中的table_name.col_name%type
%type会根据字段长度给的变量设置类型和长度
记录型变量
接收表中一整行数据
table_name%rowtype
将行中的所有字段名、类型和长度都给前面的变量。
查询时要查询*,并into 前面声明的变量。
使用时new_var.col_name就可以调用出指定字段的内容。
使用场景:
当需要用到一个表中几乎全部或者全部字段时,才能使用记录型变量;否则会造成资源过度消耗和浪费。
流程控制
条件分支
begin
if 条件1 then 执行1
elsif 条件2 then 执行2
else 执行3
end if;
end;
else if 在plsql中为elsif
结束if,必须有end if语句
循环
begin
loop
exit when 退出循环条件
end loop;
end;
重点是exit when 退出循环条件
循环结束必须有end loop语句