创建动态sql语句

时间:2014-11-11 13:31:16

标签: sql oracle plsql

我目前正在制作一个包以将赠款用作safegaurd,我想制作一个搜索程序,搜索包含名称/值列的行,如下所示:

PROCEDURE "SEARCH"(P_COLUMN IN VARCHAR2(30), P_VALUE IN MYTABLE.{P_COLUMN}%TYPE, 
                   P_REFCUR OUT SYS_REF_CURSER) IS
-- VARIABLES DECLARATION
BEGIN
    -- SOME LOGIC FOR VALIDATION
    OPEN P_REFCUR FOR
        SELECT * FROM MYTABLE WHERE {P_COLUMN} = P_VALUE;
END "SEARCH";

如何在过程的签名中定义P_VALUE的类型,并创建where子句,其中列(P_COLUMN)是变量字符串。

1 个答案:

答案 0 :(得分:0)

只需将命令放入引号即可。除此之外,你应该使用绑定变量。

OPEN P_REFCUR FOR
    'SELECT * FROM MYTABLE WHERE '||P_COLUMN||' = :val' USING P_VALUE;

并删除任何卷曲括号{},它们不会在Oracle PL / SQL中使用。