easwift_cai 2011-10-09 17:25
浏览 234
已采纳

一个动态oracle游标的问题.求解答

问题我嵌入在代码里..
create produce......
declare  
    i   integer;
    type   myref   is   ref   cursor;
    my   myref;
    s   varchar2(40);

    rec varchar2(20);
begin
      s   :=   'select   stkcode   from   tr_gfk ';
    open   my   for   s;
      LOOP
       FETCH v_cursor    INTO rec;
        EXIT WHEN v_cursor%NOTFOUND;
        .......
    //问题在这里.这个rec 是返回的tr_gfk 表的stkcode字段 .

    1.那么我现在select * from tr_gfk .如何能返回表中所有的数据?定义一个什么样的类型?.怎么写.
    2.还有我现在的sql是动态sql.表名(tr_gfk)也许是传过来的参数.就是说要根据传过来的表名参数来定义这个 rec .怎么做? 
   

close   my;
end;

 

  • 写回答

2条回答 默认 最新

  • iteye_8576 2011-10-10 16:38
    关注

    [code="sql"]
    改下:
    DECLARE
    TYPE myref IS REF CURSOR;
    cur myref;
    s VARCHAR2(40);
    tb_name VARCHAR2(20);
    col_name VARCHAR2(20);
    TYPE arrays IS TABLE OF VARCHAR2(20) INDEX BY BINARY_INTEGER;
    rec arrays;
    BEGIN
    col_name := 'id'; -- 传递的列名

    tb_name := 'T'; -- 传递的表名
    s := 'select ' || col_name || ' stkcode from ' || tb_name;
    OPEN cur FOR s;
    FETCH cur BULK COLLECT
    INTO rec;
    FOR i IN rec.FIRST .. rec.LAST LOOP
    NULL;
    dbms_output.put_line(rec(i));
    END LOOP;
    CLOSE cur;
    END;
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?
  • ¥50 invest生境质量模块