只要你能“sql的列数算出“,就可以的。
还需要考虑的是列的类型。

解决方案 »

  1.   

    我知道是不是通过动态游标来做,因为sql是参数。对吗?
    我研究了一下午,还没有研究个所以然了:)
    各位可否给个例子引导以下,不胜感谢!
      

  2.   

    SQL> create or replace procedure pvdysql(avsql in varchar2)
      2  as
      3  type t_cur is ref cursor;
      4  v_cur  t_cur;
      5  lv    date;
      6  begin
      7    open v_cur for avsql;
      8    loop
      9      fetch v_cur into lv;
     10      exit when v_cur%notfound;
     11      dbms_output.put_line('lv : ' || lv);
     12    end loop;
     13  end;
     14  /过程已创建。SQL> set serveroutput on
    SQL> exec pvdysql('select sysdate from dual');
    lv : 11-1月 -04PL/SQL 过程已成功完成。
      

  3.   

    呵呵
    楼上的大虾,我已经参透你的程序了
    在oracle中我怎么才能获得一条sql有多少列呢,是什么函数。
      

  4.   

    我想了想,如果能算出有多少列了,我怎么把这些列得值对应变量,因为列的数目没有定,这些变量我怎么声明。
    实在不好意思,我对pl/sql了解甚少,而公司非让我做一个这样的存储过程。郁闷呀!我都研究了一天了,哎还是觉得没有什么好办法。
      

  5.   

    查看表有几个字段.
    SELECT count(*) 
    FROM col 
    WHERE TNAME = '表名';
      

  6.   

    是不是可以这样做create or replace procedure pvdysql(avsql in varchar2)
    ……
    execute immediate 'drop table table_name';
    execute immediate 'create table table_name as '||avsql;
    --这样动态生成的表table_name存储的就是avsql选择到的数据集
    ……
      

  7.   

    大家说一下king的方法对不?小弟新手,觉的这个方法能行的话,挺好的。