我有一条语句是动态的   
select a, sum(b),sum(c) from Tablename||sysdate   where d = e
group by a;这条语句怎么用游标来实现呀

解决方案 »

  1.   

    declare
      var_sql varchar2(8000); --存放构造游标的sql语句
      type mycursor is ref cursor;  --定义游标类型
      mycur mycursor;               --定义动态游标
    begin
      var_sql := 'select a, sum(b),sum(c) from '||Tablename||sysdate||'   where d = e
                    group by a';
      open mycur for var_sql;       --打开游标
       ...                          --执行代码
      close mycur;
    end;
      

  2.   

    不好意思,我的语句里面的e也是动态的,应该是where d = :e
      

  3.   

    把 select a, sum(b),sum(c) from Tablename||sysdate   where d = e
    group by a;
    设置为字符串,
    然后exec sql就像adaizi1980(阿代) 所言。
      

  4.   

    呵呵,动态sql就是一切都可以临时组合,别说一个条件e是动态的,就算表名、字段列表、条件列表都是动态也没关系,只要按照一定逻辑构造出合法的字符串就可以了,学东西要举一反三嘛
      

  5.   

    请问 我想在 命令行中输出结果集 mycur 怎么写呀!
      

  6.   

    open mycur for var_sql 之后的 执行代码 可以有fetch吗。
      

  7.   

    当然有fetch啦,跟静态游标一样,但是目标数据结构一定要能装的下游标里的一行,否则会报错
      

  8.   

    可以有fetchdeclare
      var_sql varchar2(8000); --存放构造游标的sql语句
      type mycursor is ref cursor;  --定义游标类型
      mycur mycursor;               --定义动态游标
    begin
      var_sql := 'select a, sum(b),sum(c) from '||Tablename||sysdate||'   where d = e
                    group by a';
      open mycur for var_sql;       --打开游标
       ...                          --执行代码
      close mycur;
    end;