Create or replace Procedure  Proc_OracleToXml(tableName in  varchar2)
as
Cursor sys_refcursor;
begin
     /*现在要根据调用时传如 的表名取得该表中的 每一列的值 如何作到 ?*/
     open Cursor for 'select * from '''||tableName ||'''';
     loop
             .....
     end loop;
    
end;   出现的问题 如果用游标 因为表是动态的 那么表的列也是 动态的 很难取得表中的每一列的值?
用游标怎么做 ? 或则有什么其他的方法么 ? 谢谢了

解决方案 »

  1.   

    open Cursor for 'select * from '''||tableName ||'''';
    loop
    fetch cursor into ...
    exit when cursor%notfound;
    ......
    end loop;
      

  2.   

    Create or replace procedure Proc_OracleTest(tableName varchar2)as
    CurData   sys_refcursor;
    myData    tableName%Rowtype;
    begin
              open CurData for 'select * from '''||tableName||'''';
              loop
              
                   fetch CurData into myData;
                   exit when CurData%notfound;
                        Dbms_Output.put_line(myData.列名); ----打出所有的列的值
              end loop;
    end; 
      
      

  3.   

    但这里 报错   myData    tableName%Rowtype;表名必须是命名表 
      

  4.   

    取列 可以从数据字典中 user_col_comments 中得到  但最关键的是 myData    tableName%Rowtype; 这里就报错啊  因为表名是动态的  tableName%Rowtype会出错的   有什么其他的方法没有啊?只要是可以得到  动态  表 的 列 的直啊