我写了一个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的表,它有用户名和密码列 请帮忙
答案 0 :(得分:3)
您必须正确引用字符串值:
stmt :='INSERT INTO ' || SchemaName ||
'.USER_CREDS VALUES ('''|| SchemaName ||''', '''|| userpassword ||''' )';
答案 1 :(得分:0)
弗兰克的答案很棒,但我会补充一点。
从性能和可重用性的角度来看,execute immediate语句应该使用绑定变量,而insert语法应该指定与输入值对应的列。