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

PLSQL错误-ORA-00984:此处不允许列,plsql,insert,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 ||' )

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

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

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

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

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

弗兰克的回答很好,不过我想补充一点


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

Frank的回答很好,不过我要补充一点

从性能和可重用性的角度来看,executeimmediate语句应该使用bind变量,insert语法应该指定与输入的值相对应的列