现在要执行select XX,XXX,XXXX from Y
这个sql,但事先并不知道XX,XXX,XXXX是什么请问怎么取出所有列的值?

解决方案 »

  1.   

    什么意思?
    select * from y ?
      

  2.   

    哦,不好意思,我说得不清楚。
    就是从未知个数的表取出未知个数的位置列,sql如下
    select X1,X2,X3....Xn from Y1,Y2,Y3...Y4
    我想在pl/sql中,将这种动态拼成的sql语句取出来的值在拼成xml格式再传出去,但我现在不知道该怎么取值.....
      

  3.   

    啊..还多表连接?取的列是这些表的全部列?
    可以从数据字典中查询列名,再拼起来
    select column_name from user_tab_cols where table_name=upper(:tablename)
      

  4.   

    就是对数据库里有什么东西完全不知道,但是想得到所有数据
    是这种情况?
    觉得应该这样,先查用户表,查到用户表后取每个用户表的所有数据.....
    猜测....
    查所有用户表:SELECT T FROM USER_TABLES T;
    查表的列:select * from all_tab_columns where table_name in
    (SELECT T.TABLE_NAME FROM USER_TABLES T)
      

  5.   

    sql现在已经拼起来了,就是不知道怎么去结果,不要一行一行的要出列取,就好像下面的感觉,那个是用perl写的。
    while(@row = $sth->fetchrow_array){
    if($COUNT<37){
        for($i=0;$i<$L;$i++){
    $response=$response."&&C".$i."_".$COUNT."::".$row[$i]."&&FormID".$i."::".@FormName[$i]; 
    }
    $COUNT++;
    }
    }
      

  6.   

    就是在不知道列名的情况下pl/sql如何取值....这个够简明吧....看在拉登的份上,拉兄弟一把
      

  7.   

    不懂你的意思了` 如果列名查出了
     select 列1 列2 FROM 目标表不就行了吗```
     语句不好写就写个循环拼SQL
      

  8.   


    sql语句拼出来了,那就用  execute immediate strSQL; 去取结果不知道问的是不是这个意思啊。。
      

  9.   

    程序如下:CREATE OR REPLACE PROCEDURE NCSSYS.TEST
    IS
      type cutype is ref cursor;
      cv cutype;
      NN number:=1;
    BEGIN
     execute immediate 'select * from SYAIN ';
     在这里我要取syain表中第二列的值
    END TEST;貌似里答案不远了哈
      

  10.   


    execute immediate 'select * from SYAIN ';这一句没什么用要去值的话就 select col2 into 你的变量 from syain;
      

  11.   

    我看到别的帖子也在问这个问题,各位可以看看
    http://group.gimoo.net/review/108531
      

  12.   

    真的是不行了么???oracle出于什么原因没有给出接口呢???
      

  13.   

    第二列是什么概念
    最好指定列名
    可以根据数据字典来查
    select table_name,column_name,column_id,data_type from user_tab_cols
    这个column_id应该就是你要的“第几列”
    再用游标来取值拼
    没问题吧?
      

  14.   


    我也在关注这个问题,
    因为sql语句是拼出来的,列名和列数都是变化的
    不能用select into  from 
    因为into后的变量个数是固定的
    除非是二维数组
    貌似二维数组还不能在这里用
      

  15.   

    我搜到了这样一个答案************
    oracle:
    ************
    var strsql varchar2(3000);
    --定义一个用于返回结果集的变量
    var p_cursor refcursor;
    --执行plsql拼装字符串并返回结果集
    begin
     :strsql:='select ';
     for v_cur in (select column_name from all_tab_columns where table_name='T3' and column_name<> 'ID')
     loop
       :strsql:=:strsql||v_cur.column_name||',';
     end loop;
     :strsql:=rtrim(:strsql,',')||' from t3';
     open :p_cursor for :strsql;
    end;
    /
    --输出结果集
    print :p_cursor;貌似也不和我用,数据输出还要加工成htm表格的
      

  16.   

    看来pl/sql是解决不了遍历游标所有列的问题了