【问题标题】:Create SQL from parameters including FROM clause从包括 FROM 子句的参数创建 SQL
【发布时间】:2019-01-23 04:33:17
【问题描述】:

是否可以创建一个存储过程来调用 SQL 语句,其中一个参数在 select 语句中,另一个在 FROM 子句中?

在我看来这是不可能的,但我对pl/sql了解不多。

下面的代码当然不起作用。任何帮助将不胜感激。

CREATE OR REPLACE PROCEDURE procedure1 table1 VARCHAR(100)
                                       field1 VARCHAR(100)
IS
BEGIN
    FOR I IN (SELECT field1
                FROM TABLE (table1)
               WHERE field1 IS NOT NULL)
    LOOP
        DBMS_OUTPUT.PUT_LINE ('Field_name : ' || I.FIELD_NAME);
    END LOOP;
END procedure1;

【问题讨论】:

  • 是的,使用动态 SQL 是可能的,但是您将自己暴露在 SQL 注入攻击中
  • 顺便说一下,表格有列而不是字段。

标签: plsql oracle11g


【解决方案1】:

我认为您可以在变量中构造 SQL 并执行它。它应该可以工作。

CREATE OR REPLACE PROCEDURE CRAZY_PROC (tableName    VARCHAR2,
                                        fieldName    VARCHAR2)
AS
    sqlString   VARCHAR2 (1000);
BEGIN
    sqlString := 'select ' || fieldName || ' from ' || tableName;

    DBMS_OUTPUT.PUT_LINE (sqlString);
END;
/

【讨论】:

    猜你喜欢
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多