【问题标题】:PLSQL error - ORA-00984: column not allowed herePLSQL 错误 - ORA-00984: 此处不允许列
【发布时间】:2011-07-08 22:15:46
【问题描述】:

我写了一个 PL-SQL 块

DECLARE
    SchemaName  VARCHAR2(50) :='REQ_SUNIL_5750';
    userpassword VARCHAR2(50) :='XYZ';  
    stmt VARCHAR2(5000);
BEGIN
   stmt :='INSERT INTO ' || SchemaName || '.USER_CREDS VALUES ('|| SchemaName ||', '|| userpassword ||' )';
   DBMS_OUTPUT.PUT_LINE(stmt) ;
   EXECUTE IMMEDIATE stmt;
   commit;
END;

当我执行上面的块时,我正在下面, ORA-00984: 此处不允许列

我创建了名为“REQ_SUNIL_5750.USER_CREDS”的表,它有用户名和密码列 请帮忙

【问题讨论】:

    标签: plsql insert


    【解决方案1】:

    你必须正确地引用你的字符串值:

    stmt :='INSERT INTO ' || SchemaName || 
      '.USER_CREDS VALUES ('''|| SchemaName ||''', '''|| userpassword ||''' )';
    

    【讨论】:

      【解决方案2】:

      弗兰克的回答很好,不过我要加一点。

      从性能和可重用性的角度来看,您的立即执行语句应该使用绑定变量,并且插入语法应该指定对应于输入值的列。

      【讨论】:

        猜你喜欢
        • 2020-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-16
        • 2013-06-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多