美丽Oracle第五天 PLSQL编程、游标、异常

美丽Oracle第五天 PLSQL编程、游标、异常

批处理:

       一条或多条SQL语句

匿名块:

       相当于批处理,成批执行数据

一、变量声明:

       1、直接声明:

              变量名  类型;

              如:

                     i int;

              注:一次仅能声明一个变量

       2、列变量:与表中某一列的类型相同

              变量名 .列明%type;

              如:

                     vname emp.ename%tyoe;

       3、行变量:可存放表中一条记录

              变量名 %rowtype;

              如:

                     e emp%rowtype;

              引用行变量中某一列:

                     变量名.列名;

              如:

                     e.name;

二、变量赋值:

       1、直接赋值:

              变量名:=表达式;

              如:
                     i:=99;

                     vname:=’King’;

       2、交互式赋值:

              变量名:=’&变量名’;

              变量名:=&变量名;

              如:

                     i:=’&id’;

       3select语句赋值:将查询结果赋给变量

              select * into 行变量 from where 条件;

             

              select 字段1,……字段n into 变量1,……变量n from where 条件;

             

注:

                     当查询结果只有一条记录,赋值成功;如果结果为0或多条记录赋值异常。

三、常见的异常:

       1no_data_found :没有找到数据异常

       2too_many_rows :返回多记录异常

       3others :其他异常

四、异常处理:

       when 异常类型 then

              执行体;

       如:

              when no_data_found then

                     dbms_output.put_line(‘没有此用户’);

五、流程控制:

       1if语句:

              if 条件 then

                     ……

              end if;

       2if else 语句:

              if 条件 then

                     ……

              else

                     ……

              end if;

       3else if 语句:

              if 条件1 then

                     ……

              elsif 条件2 then

                     ……

              else

              end if;

六、循环:

       1loop循环:

              loop

                     ……

              exit when 条件;

                     ……

              end loop;

       2while循环:

              while 条件

                     loop

                            ……

                     end loop;

       3for循环:

              for 变量 in 最小值..最大值

                      loop

                            ……

                     end loop;

              reverse 反向输出

       4case语句

              1)单值:

                     case 表达式

                            when 条件1 then 1

                            ……

                            when 条件n then n

                            else

                            0;

                     end;

              2)多值:

                     case

                            when 条件1 then 1

                            ……

                            when 条件n then n

                            else

                            0;

                     end;

七、游标:

              是一个内存区域,可以通过指向记录的指针逐行访问记录。

       使用:

1)  声明游标:

cursor 游标名 is select 语句;

2)  打开游标:

open 游标名;

3)  读取游标中的记录:

fetch 游标名 into 变量;

4)  关闭游标:

close 游标名;

       游标的属性:

       1、游标名%found    读取到数据为true,否则为false

       2、游标名%notfound   读取到数据为false

       3、游标名%rowcount   游标读取记录条数,游标打开后值为0,每读取一次加1

       4、游标名%isopen              判断游标是否打开,true为打开

       如:

              loop中使用游标

              declare

                     cursor mycur is select * from emp;

                     e emo%rowtype;

              begin

                     open mycur;

                     loop

                            fetch mycur into e;

                            exit when mycur%notfound;

                            dbms_output.put_line(‘’);

                     end loop;

                     close mycur;

              end;

       5、带参数的游标:

              cursor 游标名(参数) is select 语句;

       打开:

              open 游标名(参数);

八、自定义异常:

              自定义异常名 exception;

       如:

              declare

                     --变量声明;

                     ex exception;

              begin

                     ……

                     raise ex;         --用户抛出异常

                     exception

                            when ex then                --捕获异常

                            ……

              end;

九、动态抛出异常:

       raise_application_error(错误代码, ‘错误信息’);

      

       错误代码的范围:-20000~-20999

       捕获异常错误信息和错误代码的函数:

              1sqlerrm     错误的信息,返回字符型

              2sqlcode     错误代码,返回数值型

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值