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