我正在使用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,这是正确的方向吗?似乎不适合我。
提前感谢您提供任何帮助
答案 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;