2010-04-09 88 views
2

我正在创建一个动态游标,我想遍历游标中存在的列。我会怎么做?如何循环访问oracle pl/sql游标中的列

例如:

create or replace procedure dynamic_cursor(empid in varchar2, RC IN OUT sys_refcursor) as 
    stmt varchar2(100); 
    begin 
    stmt := 'select * from employees where id = ' || empid; 
    open RC for stmt using val; 

    for each {{COLUMN OR SOMETHING}} 
     --TODO: Get this to work 
    loop; 
end;  

回答

3

您将需要使用Oracle Dynamic SQL,最有可能的method 4。编辑: 对不起,以上是针对Pro * C。您将需要使用DBMS_SQL软件包。它相当复杂,但可以让您在运行时解析,执行和获取所需的任意SQL语句。特别是,看看例子3和例子8.

+0

我有动态的sql工作。我的示例代码过于简化。我想要做的是让stmt变量变得更加动态,以至于我不会被委托给fieldset。这就是为什么我想循环游标中的列。 – Lloyd 2010-04-09 15:07:05