-1
在oracle PLSQL中,如何将列名和列值传递给过程。 该过程基于where子句执行选择命令 ,使在执行plsql的过程中传递列名和列值查询
并且该过程将结果集(refcursor)存储在OUT参数中。
这里列名和columnvalue由用户
在oracle PLSQL中,如何将列名和列值传递给过程。 该过程基于where子句执行选择命令 ,使在执行plsql的过程中传递列名和列值查询
并且该过程将结果集(refcursor)存储在OUT参数中。
这里列名和columnvalue由用户
过去了,我可以看到你尚未分享任何投入。我试图按照您的要求复制 方案。请检查下面的代码段。希望这有助于
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;
要做到这一点安全,您需要使用DBMS_SQL包。编码变得相当复杂。
你试过了什么?您只需在声明中指定输入和输出参数(网址为http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/parameter_declaration.htm#LNPLS1271)。但是,如果它可以是任何数据类型的列 - 那么必须将其输入参数parm作为一个字符串去掉,然后在proc中进行转换。 – EdStevens
哦,我知道了'str:='select h。* from holidaymaster h where'|| column_name || '='''|| column_val || '' ''; 用于str的open ref_cursor; '它的工作原理将varchar2,日期和数目到目前为止。 – Sarabjeet
**为什么2 downvotes ?? ** – Sarabjeet