PL/SQL 是在SQL基础上添加过程化的能力.PL的意思是procedure language
结构:
Declare
--定义说明部分,例如定义变量
Begin
--程序开始执行
Exception
--例外执行部分
End;
/
Desc 不仅可以查询表,同样也可以查询程序包,例如dbms_output
打开输出开关: set serveroutput on;
/ 表示执行上一条命令
基本变量类型
引用变量类型:
变量名 表名.字段名%type;
记录变量类型
变量名 表名%rowtype
如何从键盘接收一个输入
Accept num prompt ‘请输入一个数字’
Declare
Pnum number;
Begin
Pnum:=#
End;
/
循环
While conditions loop
Xxxxxxxxxxxx
End loop;
Loop
Exit when conditions
Xxxxxx
xxxxxx
End loop;
For x in 1..3 loop
Xxxxxxxxxxx
Xxxxxxxx
End loop;
引用变量是 针对表中一个字段
记录变量是 针对表中一行记录
光标 是针对 一组记录,相当于记录的集合
光标操作步骤
1 定义光标
Cursor c is select name from userinfo;
Pname userinfo.name%type;
2 打开光标
Open c;
3 取出记录
loop
Fetch c into pname;
Exit when c%notfound;
End loop;
4 关闭光标
Close c;
光标 ,有两个属性
%found 当找到记录时候 为true
%notfound 当找不到记录时候为TRUE
光标还有两个属性
%isopen 若是光标已经打开,则返回true
%rowcount 标识影响了的行数 例如 若有100行数据,已经选取了20行数据, 则rowcount 的值为20.
光标有一个限制,,就是打开的光标,在默认的情况下不能超过300个,当然 这个数值是可以修改的
带参数的光标
只有定义 ,打开光标时候不一样 其他不变
Cursor c (dno number(4,0)) is select * from userinfo where 字段名=dno;
Open c(10);
定义光标时候的参数 为形参 ,变量名 变量类型
打开光标时候的参数为实参 .
例外
Exception 语句的作用就是捕获例外,并且处理例外.不让例外抛出给系统,
例外 分为系统例外 和自定义例外
例子:
Exception
When 例外类型名字 then xxxxxxxxxx
When others then xxxxxxxxxxx
注意 : 捕获例外 ,必须捕获全部的例外,使用关键词others
自定义例外
1. 定义一个例外
例外名字 exception
2 抛出例外
Raise 例外名字
3. 捕获处理 例外
Exception
When 例外名字 then xxxx;
注意: 当抛出一个例外的时候,程序会跳转到exception语句执行 ,,若是抛出例外 和 exception 语句之间 还有资源,例如光标没有关闭,请不用担心,因为系统会自动关闭掉.