在oracle PLSQL中,如何将列名和列值传递给过程。
该过程基于where子句执行select命令
这样Select * from FOO where columnname=columnnvalue
并且该过程将结果集(refcursor)存储在OUT参数中。
此处,columnname和columnvalue由用户传递
答案 0 :(得分:1)
我可以看到你没有分享任何意见。我试图复制 方案根据您的要求。请查看下面的代码段。希望它 帮助
set serveroutput on;
CREATE OR REPLACE PROCEDURE USER_INPUT_PROC(
p_col_name_input IN VARCHAR2,
p_col_val_input IN VARCHAR2,
p_lst_out OUT sys_refcursor )
AS
lv_col VARCHAR2(10000 CHAR);
BEGIN
NULL;
SELECT DECODE(p_col_name_input,'empno',' AND EMPNO = '||''''||p_col_val_input||'''','ename',' AND ENAME = '||''''||p_col_val_input||'''','')
INTO lv_col
FROM DUAL;
OPEN p_lst_out FOR 'SELECT * FROM EMP
WHERE 1 = 1 '||lv_col;
END;
答案 1 :(得分:0)
要安全地执行此操作,您需要使用dbms_sql包。编码变得非常复杂。