PL/SQL - 03
使用嵌套塊
在PL/SQL塊中可以嵌套子塊,嵌套的塊既可以放在外部塊的執行部分,也可以放在異常處理部分,但是不能放在外部塊聲明部分
內部嵌套塊可以訪問外部嵌套塊聲明的變量,但是外部聲明塊不能訪問內部聲明塊中的變量
declare
v_deptno number(2) := 50 ;
v_dname varchar2(12) ;
begin
?????? begin
?????? select dname? into v_dname from scott.dept where deptno = v_deptno ;
?????? dbms_output.put_line('您好查找的部門是: '|| v_dname);
?????? end ;
declare
? v_loc varchar2(10) := '深圳南山';
? begin
? update SCOTT.DEPT set loc = v_loc where deptno = v_deptno ;
??? dbms_output.put_line('在內嵌塊中成功更新部門資料! ');
? end ;
exception when no_data_found
???????? then begin
???????? insert into scott.dept values(v_deptno,'信息部','深圳') ;
???????? dbms_output.put_line('在異常處理模塊成功恢復資料!');
exception when others
???????? then
???????? dbms_output.put_line('未知異常!');
???????? end;
end;
此段程序共有三個begin--end結構。
第一組begin-end 結構是引導整個程序塊,所以是主結構;
第二個 是用來查詢部門信息的
?????? begin
?????? select dname? into v_dname from scott.dept where deptno = v_deptno ;
?????? dbms_output.put_line('您好查找的部門是: '|| v_dname);
?????? end ;
其實這個begin-end 結構可以去掉,并不影響程序執行
第三個是用來更新部門信息的 ,其完整代碼如下
declare
? v_loc varchar2(10) := '深圳南山';
? begin
? update SCOTT.DEPT set loc = v_loc where deptno = v_deptno ;
??? dbms_output.put_line('在內嵌塊中成功更新部門資料! ');
? end ;
這里的begin-end 結構是不可以去掉的 ,因為在后續語句執行之前 進行了變量定義,
即:declare
? v_loc varchar2(10) := '深圳南山';
在一個單一的begin-end結構中是不能再重新定義變量的,除非此時已經決定此變量不屬于此begin-end結構,所以這里的begin-end不能刪除。
附:使用命名嵌套塊
<<外部塊>>
declare
v_deptno number(2) := 50 ;
v_dname varchar2(12) ;
begin
?????? <<查詢員工名稱塊>>
?????? begin
?????? select dname? into v_dname from scott.dept where deptno = v_deptno ;
?????? dbms_output.put_line('您好查找的部門是: '|| v_dname);
?????? end ;
?<<更新員工部門塊>>
declare
? v_loc varchar2(10) := '深圳南山';
? begin
? update SCOTT.DEPT set loc = v_loc where deptno = v_deptno ;
??? dbms_output.put_line('在內嵌塊中成功更新部門資料! ');
? end ;
exception when no_data_found
???????? then begin
???????? insert into scott.dept values(v_deptno,'信息部','深圳') ;
???????? dbms_output.put_line('在異常處理模塊成功恢復資料!');
exception when others
???????? then
???????? dbms_output.put_line('未知異常!');
???????? end;
end;
轉載于:https://blog.51cto.com/wyhstar460/1638875
總結
以上是生活随笔為你收集整理的PL/SQL - 03的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows下配置DNS服务器
- 下一篇: 浅谈PopupWindow弹出菜单