PL / SQL游标使用参数作为列名

时间:2012-05-04 13:17:10

标签: parameters plsql cursor

我正在使用PL / SQL。我正在向我的程序发送一些参数。其中一个参数应该是列名。最初它是一个varchar2,但我想在我的光标中使用它来引用列名。这怎么可能?

这就是我的代码看起来像:

    PROCEDURE proc_name( x IN VARCHAR2, y IN VARCHAR2 ) IS

      cursor csr IS 
       SELECT * 
       FROM table
       SORT BY x y


     BEGIN 
      for y in csr loop 
        ------
      end loop; 

     END proc_name;

在过去的几天里,我试图研究这个,但没有运气。我研究了动态SQL,这是正确的方向吗?似乎不适合我。

提前感谢您提供任何帮助

1 个答案:

答案 0 :(得分:2)

试试这个:

PROCEDURE proc_name( x IN VARCHAR2, y IN VARCHAR2 ) IS

  rc sys_refcursor;

  r_table table%rowtype;

 BEGIN 
  open rc for
   'SELECT * 
    FROM table
    ORDER BY ' || x || ' ' || y;
  loop
    fetch rc into r_table;
    exit when rc%notfound;
    ------
  end loop; 
  close rc;

 END proc_name;