阅读背景:

示例一个PLSQL完成功能来说明PLSQL的作用(定义变量+异常处理+抛异常)

来源:互联网 
 
 
PLSQL的作用:PL/SQL通过使用块结构,可以在一个块中包含多个SQL语句以及PLSQL语句,可以将PLSQL块嵌入到应用程序中,使用PLSQL块后,网络上只需要发送一次plsql块,就可以完成所有sql语句的处理工作,这样大大减少了网络开销。示例:创建的员工表中添加一个新的成员,首先需要判断要添加的员工工号是否存在,如果存在,则更新该工号对应的员工的信息,否则添加一个新的员工;SQL> select * from t where t.empno='7788';     EMPNO ENAME      JOB               MGR HIREDATE           SAL       COMM     DEPTNO---------- ---------- ---------- ---------- ----------- ---------- ---------- ----------      7788 SCOTT      ANALYST          7566 1982/12/9         3000                    20set serveroutput on  declare l_empno t.empno%type;l_ename t.ename%type;l_job t.job%type;l_mgr t.mgr%type;l_hiredate t.hiredate%type;l_sal t.sal%type;l_deptno t.deptno%type;l_error varchar2(200);beginl_empno :='7788';l_ename :='SCOTT';l_job :='CLERK';l_mgr :='7777';l_hiredate :=to_date('20170204','yyyy/mm/dd');l_sal :='6000';l_deptno :='10';---首先进行更新操作update t set ename=l_ename,job=l_job,mgr=l_mgr,hiredate=l_hiredate,sal=l_sal,deptno=l_deptno where empno=l_empno ;dbms_output.put_line('员工信息被更新成功');if sql%notfound then----插入到表中insert into t (empno,ename,job,mgr,hiredate,sal,deptno)values(l_empno,l_ename,l_job,l_mgr,l_hiredate,l_sal,l_deptno);dbms_output.put_line('插入信息成功');commit;end if;exception when others thenl_error :=sqlerrm;dbms_output.put_line(l_error);/*这里也可以直接打印sqlerrm  dbms_output.put_line(sqlerrm);*/end;/SQL>  declare  2  l_empno t.empno%type;  3  l_ename t.ename%type;  4  l_job t.job%type;  5  l_mgr t.mgr%type;  6  l_hiredate t.hiredate%type;  7  l_sal t.sal%type;  8  l_deptno t.deptno%type;  9  l_error varchar2(200); 10  begin 11  l_empno :='7788'; 12  l_ename :='SCOTT'; 13  l_job :='CLERK'; 14  l_mgr :='7777'; 15  l_hiredate :=to_date('20170204','yyyy/mm/dd'); 16  l_sal :='6000'; 17  l_deptno :='10'; 18  ---首先进行更新操作 19  update t 20  set 21  ename=l_ename, 22  job=l_job, 23  mgr=l_mgr, 24  hiredate=l_hiredate, 25  sal=l_sal,deptno=l_deptno where empno=l_empno ; 26  dbms_output.put_line('员工信息被更新成功'); 27  if sql%notfound then 28  ----插入到表中 29  insert into t (empno,ename,job,mgr,hiredate,sal,deptno) 30  values(l_empno,l_ename,l_job,l_mgr,l_hiredate,l_sal,l_deptno); 31  dbms_output.put_line('插入信息成功'); 32  commit; 33  end if; 34  exception 35  when others then 36  l_error :=sqlerrm; 37  dbms_output.put_line(l_error);/*这里也可以直接打印sqlerrm  dbms_output.put_line(sqlerrm);*/ 38  end; 39  /员工信息被更新成功PL/SQL procedure successfully completed此时查看7788这个用户的信息SQL> select * from t where t.empno='7788';     EMPNO ENAME      JOB               MGR HIREDATE           SAL       COMM     DEPTNO---------- ---------- ---------- ---------- ----------- ---------- ---------- ----------      7788 SCOTT      CLERK            7777 2017/2/4          6000                    10总结:①示例中定义变量类型时可以直接使用l_empno t.empno%type;的方式,其实也可以直接赋值 l_empno varchar2(200) :='7788'的方式。②在这个PLSQL块中包含了一个更新操作和一个插入操作,其实在实际工作中遇到很多类似需求时也可以考虑使用一个merge into语句来完成这样的功能。最后还对异常进行了处理,这里的话是打印出异常错误信息,其实我们也可以记录到日志里,这时候就需要建立一张日志表,将l_error插入到表里即可。③在昨天一个需求当中,需要让存储过程出现错误时抛出异常,让java程序捕获到这个异常信息,来控制整个数据的传送,想到的方式呢就是在最后加RAISE_APPLICATION_ERROR(-20001,l_error)抛出异常。PLSQL的作用:PL/SQL通过使用块结构,可以在一个块中包含多个SQL语句以及PLS



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: