Oracle的几种循环语句

来源:互联网 发布:论文数据造假查不出来 编辑:程序博客网 时间:2024/05/26 05:53

loop循环:

  1  declare  2  type emp_cursor is ref cursor;  3  v_cursor emp_cursor;  4  v_emp emp%rowtype;  5  begin  6  open v_cursor for select * from emp where deptno = 10;  7  loop  8  fetch v_cursor into v_emp;  9  exit when v_cursor%notfound; 10  dbms_output.put_line('雇员名字为:'||v_emp.ename||' 薪水为:'||v_emp.sal); 11  end loop; 12  exception 13  when no_data_found then 14  dbms_output.put_line('出现异常!'); 15* end;SQL> /雇员名字为:CLARK 薪水为:2450雇员名字为:KING 薪水为:7000雇员名字为:MILLER 薪水为:1300PL/SQL 过程已成功完成。

while循环:

  1  declare  2  type emp_cursor is ref cursor;  3  v_cursor emp_cursor;  4  v_emp emp%rowtype;  5  begin  6  open v_cursor for select * from emp where deptno = 10;  7  fetch v_cursor into v_emp;  8  while v_cursor%found loop  9  dbms_output.put_line('雇员名字为:'||v_emp.ename||' 薪水为:'||v_emp.sal); 10  fetch v_cursor into v_emp; 11  end loop; 12  exception 13  when no_data_found then 14  dbms_output.put_line('没有找到数据'); 15* end;SQL> /雇员名字为:CLARK 薪水为:2450雇员名字为:KING 薪水为:7000雇员名字为:MILLER 薪水为:1300PL/SQL 过程已成功完成。

for循环:

  1  declare  2  cursor v_cursor is select ename from emp where deptno = 10;  3  type emp_table_type is table of emp.ename%type index by binary_integer;  4  emp_table emp_table_type;  5  begin  6  open v_cursor;  7  fetch v_cursor bulk collect into emp_table;  8  for i in 1..emp_table.count() loop  9  dbms_output.put_line('雇员名字为:'||emp_table(i)); 10  end loop; 11  exception 12  when no_data_found then 13  dbms_output.put_line('出现异常!'); 14* end;SQL> /雇员名字为:CLARK雇员名字为:KING雇员名字为:MILLERPL/SQL 过程已成功完成。

bug;在写for循环的时候由于不熟悉PL/SQL表类型,在输出ename这列时刚开始使用的是:dbms_output.put_line('雇员名字为:'||i.ename);然后报错:对变量“I”的引用无效。

然后又将i.ename改成i,然后输出的结果却是1,2,3;不是理想中的ename这一列。最后想到这是单列的表,直接改成emp_table(i),最后输出成功了。


                                 欢迎关注行者摩罗微信公众号(xingzhemoluo),共同交流编程经验,扫描下方二维码即可;


                                                           


0 0