0

PL/SQL を使用しています。プロシージャにいくつかのパラメータを送信しています。これらのパラメーターの 1 つは、列名である必要があります。最初は 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 に答える