0

我正在使用 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,这是正确的方向吗?似乎不适合我。

提前感谢您的帮助

4

1 回答 1

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;
于 2012-05-04T15:58:00.077 回答