首页 文章

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

提问于
浏览
-1

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

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

这里columnname和columnvalue由用户传递

2 回答

  • 0

    我可以看到你没有分享任何投入 . 我试图根据您的要求复制场景 . 请查看下面的代码段 . 希望能帮助到你

    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

    要安全地执行此操作,您需要使用dbms_sql包 . 编码变得非常复杂 .

相关问题