PLSQL错误 - ORA-00984:此处不允许列

时间:2011-07-08 09:43:49

标签: plsql insert

我写了一个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的表,它有用户名和密码列 请帮忙

2 个答案:

答案 0 :(得分:3)

您必须正确引用字符串值:

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

答案 1 :(得分:0)

弗兰克的答案很棒,但我会补充一点。

从性能和可重用性的角度来看,execute immediate语句应该使用绑定变量,而insert语法应该指定与输入值对应的列。