在执行plsql查询的过程中传递列名和列值

时间:2016-03-06 05:31:11

标签: oracle stored-procedures plsql

在oracle PLSQL中,如何将列名和列值传递给过程。 该过程基于where子句执行select命令 这样Select * from FOO where columnname=columnnvalue

并且该过程将结果集(refcursor)存储在OUT参数中。

此处,columnname和columnvalue由用户传递

2 个答案:

答案 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包。编码变得非常复杂。