博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle PL/SQL程序设计
阅读量:7072 次
发布时间:2019-06-28

本文共 4100 字,大约阅读时间需要 13 分钟。

declare

      说明部分    (变量说明,光标申明,例外说明 〕

begin

      语句序列   (DML语句〕…

exception

      例外处理语句  

End;

/

 

 

if语句

循环语句

光标(Cursor)==ResultSet

l说明光标语法:

CURSOR  光标名  [ (参数名  数据类型[,参数名 数据类型]...)]

      IS  SELECT   语句;

l用于存储一个查询返回的多行数据
l打开光标:                 open c1;    (打开光标执行查询)
l取一行光标的值:fetch c1 into pjob; (取一行到变量中)
l关闭光标:          close  c1;(关闭游标释放资源)
 
系统定义例外
•No_data_found    (没有找到数据)
•Too_many_rows          (select …into语句匹配多个行)
•Zero_Divide   ( 被零除)
•Value_error     (算术或转换错误)
•Timeout_on_resource      (在等待资源时发生超时)
 
1 select * from emp;  2   3 select * from tab;  4   5 set serveroutput on  6 declare  7 begin  8   SYS.DBMS_OUTPUT.PUT_LINE('Hello world');  9   end; 10   / 11    12   select * from emp; 13    14    15    16   set serveroutput on; 17   declare 18    pename EMP.ENAME%type; 19    psal EMP.SAL%type; 20    begin 21    select ename,sal into pename,psal from emp where EMPNO=7369; 22    DBMS_OUTPUT.put_line(pename||'***'||psal); 23    end; 24    25    26   set serveroutput on; 27   declare  28     emp_rec emp%rowtype; 29     begin 30     select * into emp_rec from emp where empno=7369; 31     SYS.DBMS_OUTPUT.PUT_LINE(emp_rec.ename || '的薪水'||emp_rec.sal); 32   end; 33   / 34    35    36    37    38    39 set serveroutput on 40 accept num prompt '请输入一个数字'; 41 declare  42     pnum number  := # 43 begin 44     if pnum = 0 then 45     dbms_output.put_line('输入的数字是'||pnum); 46     elsif pnum = 1 then 47     dbms_output.put_line('输入的数字是'|| pnum); 48     else 49     dbms_output.put_line('输入的是其他数字'); 50     end if; 51 end; 52   / 53    54 set serveroutput on 55 accept num prompt '请输入数字'; 56 declare  57   num number :=1; 58 begin 59   loop 60     EXIT WHEN num># 61     DBMS_OUTPUT.PUT_LINE(num); 62     num :=num+1; 63   end loop; 64 end; 65  66  67  68 set serveroutput on; 69 declare  70   CURSOR cemp is select ename,sal from emp; 71   pename EMP.ENAME%type; 72   psal EMP.SAL%type; 73   begin 74   open cemp; 75     loop 76       FETCH cemp into pename,psal; 77       exit when cemp%notfound; 78       DBMS_OUTPUT.PUT_LINE(pename||'的工资是'||psal); 79     end loop; 80   close cemp; 81   end; 82  83  84   create table testemp as 85   select * from emp; 86   select * from testemp; 87    88    89    90    91   set serveroutput on; 92   declare 93     cursor cemp is select empno,tjob from testemp; 94     pempno testemp.EMPNO%type; 95     pjob testemp.tjob%type; 96   begin 97     open cemp; 98     loop 99       fetch cemp into pempno,pjob;100       exit when cemp%notfound;101       if pjob='PRESIDENT' then102         update testemp set sal=sal+1000 where empno=pempno;103       elsif pjob='MANAGER' then104         update testemp set sal=sal+800 where empno=pempno;105       else106         update testemp set sal=sal+400 where empno=pempno;107       end if;108     end loop;109     close cemp;110   end;111   112   select * from TESTEMP;113   114   rollback;115   116   117   118   set serveroutput on;119   accept num prompt '输入部门号';120   declare 121   cursor cemp(dtno testemp.deptno%type) is select ename,deptno from testemp where deptno=dtno;122   pename testemp.ename%type;123   pdeptno testemp.deptno%type;124   begin125     open cemp(&num);126       loop127         fetch cemp into pename,pdeptno;128         exit when cemp%notfound;129         DBMS_OUTPUT.PUT_LINE(pename || '******' || pdeptno);130       end loop;131     close cemp;132     DBMS_OUTPUT.put_line('success');133   end;134   135 set serveroutput on;136 declare 137     num number;138 begin139   num:=16/0;140 EXCEPTION141   when Zero_Divide then DBMS_OUTPUT.PUT_LINE('除数不能为0');142   when others then 143   DBMS_OUTPUT.PUT_LINE('其他例外');144 end; 145 146 set serveroutput on;147 declare 148  cursor cemp is select ename from emp where deptno=60;149  pename emp.ename%type;150  no_dept_exception exception;151 begin 152   open cemp;153     loop154       fetch cemp into pename;155       if cemp%notfound then 156       raise no_dept_exception;157       end if;158     end loop;159   exception 160   when no_dept_exception then 161   DBMS_OUTPUT.PUT_LINE('没有相关部门');162   when others then 163   DBMS_OUTPUT.PUT_LINE('其他例外');164   close cemp;165 end;

 

转载于:https://www.cnblogs.com/liuwt365/p/4187652.html

你可能感兴趣的文章
书摘—极致产品
查看>>
5.10-17项目经理考试圆梦提分现场面授行动
查看>>
IT项目中存储设备的选型
查看>>
esxi报错There is no more space for virtual disk--逻辑卷缩减!
查看>>
NFS4中小企业存储实战
查看>>
Windows Server 2012 R2工作文件夹⑨:自动发现设置
查看>>
ActiveReports 6.0 - 高效开发UI
查看>>
VMM2012应用指南之4-向VMM中添加Hyper-V主机与应用服务器
查看>>
最终用户计算一周观察 002
查看>>
Android应用程序进程启动过程的源代码分析(1)
查看>>
km itm监控启停命令记录
查看>>
NIST:制定Cybersecurity的框架进行时
查看>>
无缝升级Windows8.1普通版至专业版
查看>>
CentOS 6.3下nginx、php-fpm、drupal快速部署
查看>>
天猫国潮行动:卡萨帝F+冰箱成高端主推产品
查看>>
产品验证环节的失语现象
查看>>
【英文演讲】What are your strengths
查看>>
logstash推送mysql慢查询日志
查看>>
面试如何让自己赢在细节
查看>>
运维自动化之使用Cobbler自动化安装系统与FAQ
查看>>