Oracle中光标的使用和异常


Oracle中光标的使用和异常
  1. 1.没有参数的光标的使用  
  2. SQL> declare  
  3.   2  cursor cl is select * from emp;  
  4.   3  emp_row emp%rowtype;  
  5.   4  begin  
  6.   5  open cl;  
  7.   6  loop  
  8.   7       fetch cl into emp_row;  
  9.   8       exit when cl%notfound;  
  10.   9       dbms_output.put_line('员工的名称'|| emp_row.ename || '员工的部门'|| emp_row.deptno);  
  11.  10  end loop;  
  12.  11  close cl;  
  13.  12  end;  
  14.  13  /  
  15.    
  16. 员工的名称SMITH员工的部门20  
  17. 员工的名称ALLEN员工的部门30  
  18. 员工的名称WARD员工的部门30  
  19. 员工的名称JONES员工的部门20  
  20. 员工的名称MARTIN员工的部门30  
  21. 员工的名称BLAKE员工的部门30  
  22. 员工的名称CLARK员工的部门10  
  23. 员工的名称SCOTT员工的部门20  
  24. 员工的名称KING员工的部门10  
  25. 员工的名称TURNER员工的部门30  
  26. 员工的名称ADAMS员工的部门20  
  27. 员工的名称JAMES员工的部门30  
  28. 员工的名称FORD员工的部门20  
  29. 员工的名称MILLER员工的部门10  
  30.    
  31. PL/SQL procedure successfully completed  
  32.   
  33.   
  34.   
  35. SQL> declare  
  36.   2  cursor cl(emp_name varchar2) is select * from emp where ename=emp_name;  
  37.   3  emp_row emp%rowtype;  
  38.   4  begin  
  39.   5  open cl('SMITH');  
  40.   6  fetch cl into emp_row;  
  41.   7  dbms_output.put_line('员工的名称'||emp_row.ename||'员工的工作'|| emp_row.job);  
  42.   8  close cl;  
  43.   9  end;  
  44.  10  /  
  45.    
  46. 员工的名称SMITH员工的工作CLERK  
  47.   
  48.   
  49.   
  50. 部门编号为10的员工  
  51. SQL> declare  
  52.   2  cursor cl(emp_deptno number) is select * from emp where deptno=emp_deptno;  
  53.   3  emp_row emp%rowtype;  
  54.   4  begin  
  55.   5  open cl(10);  
  56.   6  loop  
  57.   7  fetch cl into emp_row;  
  58.   8  exit when cl%notfound;  
  59.   9  dbms_output.put_line( '员工的名称:'||emp_row.ename);  
  60.  10  end loop;  
  61.  11  close cl;  
  62.  12  end;  
  63.  13  /  
  64.    
  65. 员工的名称:CLARK  
  66. 员工的名称:KING  
  67. 员工的名称:MILLER  
  68.    
  69. PL/SQL procedure successfully completed  
  70.   
  71.   
  72.   
  73.   
  74. 除0的异常  
  75. SQL> declare  
  76.   2  pnum number:=10;  
  77.   3  begin  
  78.   4  pnum:=pnum/0;  
  79.   5  exception  
  80.   6    when zero_divide then  
  81.   7    dbms_output.put_line('除数不能为0');  
  82.   8  end;  
  83.   9  /  
  84.    
  85. 除数不能为0  
  86.    
  87. PL/SQL procedure successfully completed  
  88.   
  89.   
  90. 自定义的例外  
  91. SQL> declare  
  92.   2     cursor cl(emp_no number) is select * from emp where empno=emp_no;  
  93.   3      emprow emp%rowtype;  
  94.   4      no_found exception;  
  95.   5      begin  
  96.   6      open cl(1000);  
  97.   7           fetch cl into emprow;  
  98.   8                 if cl%notfound then raise no_found;  
  99.   9                 end if;  
  100.  10     close cl;  
  101.  11     exception  
  102.  12           when no_found then  
  103.  13                dbms_output.put_line('自己定义的意外');  
  104.  14     end;  
  105.  15  /  
  106.    
  107. 自己定义的意外  
  108.    
  109. PL/SQL procedure successfully completed  

更多Oracle相关信息见Oracle 专题页面 http://www.bkjia.com/topicnews.aspx?tid=12

相关内容