我是这样用的:
13:30:15 jlanzpa817>DECLARE
13:31:02   2    TYPE NumTab IS TABLE OF tab.tname%TYPE;
13:31:02   3    TYPE NumTabty IS TABLE OF tab.TABTYPE%TYPE;
13:31:02   4    sals NumTab;
13:31:02   5    sals1 NumTabty;
13:31:02   6  BEGIN
13:31:02   7     SELECT tname,TABTYPE BULK COLLECT INTO sals,sals1 FROM tab WHERE ROWNUM <= 100;
13:31:02   8     dbms_output.put_line(sals(1));
13:31:02   9     dbms_output.put_line(sals1(2));
13:31:02  10  END;
13:31:02  11  /
A
TABLEPL/SQL 过程已成功完成。已用时间:  00: 00: 00.40
13:31:03 jlanzpa817>

解决方案 »

  1.   

    collect的这种用法我还真没有用过
    execute immediate sql_str bulk collect into tab_id,tab_name;
    我老觉得这句话有问题,呵呵,但不知在哪里
    我以前也用过
    EXECUTE IMMEDIATE query_str INTO lobloc USING v_id;
    类似的语句。
    我这里还没有8i,只有805,还没有办法帮你试,帮你up一下。
    我对collect的用法一般用index table,不用nest table。
    index table不用初始化
    这是我的用法
       ……
        TYPE tssn is TABLE of  NUMBER(10)
        INDEX BY BINARY_INTEGER;
        TYPE tfname is TABLE of VARCHAR2(15)
        INDEX BY BINARY_INTEGER;
        TYPE tlname is TABLE of VARCHAR2(20)
        INDEX BY BINARY_INTEGER;   ……
    PROCEDURE allperson
                (ssn    OUT     tssn,
                 fname  OUT     tfname,
                 lname  OUT     tlname)
    IS
        CURSOR person_cur IS
                SELECT ssn, fname, lname
                FROM person;    percount NUMBER DEFAULT 1;BEGIN
        FOR singleperson IN person_cur
        LOOP
                ssn(percount) := singleperson.ssn;
                fname(percount) := singleperson.fname;
                lname(percount) := singleperson.lname;
                percount := percount + 1;
        END LOOP;
    END;
      

  2.   

    是不是因为我oracle的版本低?
      

  3.   

    依照相逢何必曾相识的说法:
    sql_str:='select id,name bulk collect into tab_id,tab_name from   
               t_temp order by id desc';
    execute immediate sql_str ;
      

  4.   

    oracle的版本是什么?805肯定不可以用
    execute immediate
      

  5.   

    C语言中,不是可以嵌入SQL脚本吗。但是并不是直接就可以编译的。需要由Oracle公司提供的预编译器编译一下,针对开发语言的不同,有好几个呢。Pro*c是针对C语言的。安装oracle时,如果选择了application develop,就会把这个预编译工具安装上。它的效率是比较高的,我们公司给日本鬼子开发的项目都是用它来来开发的。如果还有不明白的我建议你到oracle技术网去看看,有个专栏专门讲这个得。给我留言,留下你的地址,我给你发一个pdf的电子书给你。
    ================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]
      

  6.   

    execute immediate sql_str 
    这是sql server的做法,oracle不支持
    ================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]
      

  7.   

    execute immediate sql_str 
    这是sql server的做法,oracle不支持
    谁说的?????
    在8i中是支持的
      

  8.   

    我的oracle版本是8.1.6
    是不是不能用:
    execute immediate sql_str bulk collect into tab_id,tab_name;
    这样的语句呢?
    各位多多指点!