开发动态SQL之处理多行查询语句

        使用EXCUTE IMMEDIATE 只能处理单行查询语句,为了动态地处理SELECT语句所返回的多行数据,需要使用OPEN-FOR,FETCH和CLOSE语句。处理步骤如下:


         定义游标变量——打开游标变量——循环提取数据——关闭游标变量

       

       1.定义游标变量

        TYPE cursortype IS REF CURSOR;

         cursor_variable cursortype;

        2.打开游标变量

         OPEN cursor_variable FOR dynamic_string

          [USING bind_argument[, bind_argument]...];

         3.循坏提取数据

          FETCH cursor_variable INTO {var1[,var2]... | record_var};

          4.关闭游标变量

          CLOSE cursor_variable;

           5.多行查询示例

SQL> declare
  2    type empcurtyp is ref cursor;
  3    emp_cv empcurtyp;
  4    emp_record emp%rowtype;
  5    sql_stat varchar2(100);
  6  begin
  7    sql_stat:='select * from emp where deptno=:dno';
  8    open emp_cv for sql_stat using &dno;
  9    loop
 10      fetch emp_cv into emp_record;
 11      exit when emp_cv%notfound;
 12      dbms_output.put_line('雇员名:'||emp_record.ename
 13        ||',工资:'||emp_record.sal);
 14    end loop;
 15    close emp_cv;
 16  end;
 17  /
输入 dno 的值:  10
原值    8:   open emp_cv for sql_stat using &dno;
新值    8:   open emp_cv for sql_stat using 10;
雇员名:CLARK,工资:1760
雇员名:KING,工资:5500
雇员名:MILLER,工资:3300
雇员名:BAKE,工资:
雇员名:MARY,工资:2200




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值