【发布时间】:2011-11-18 16:01:40
【问题描述】:
我在使用 sql 查询时遇到问题。如果同一行不存在,我需要插入一行。这是我目前所拥有的:
DECLARE
BEGIN
FOR FOLDER_ROW IN (SELECT FOLDERID, USERID FROM DATA1.FOLDERS)
LOOP
IF NOT EXISTS (SELECT * FROM DATA1.FOLDER_USER WHERE FOLDER_ID = FOLDER_ROW.FOLDERID AND USER_ID = FOLDER_ROW.USERID)
INSERT INTO DATA1.FOLDER_USER (FOLDER_ID, USER_ID) VALUES (FOLDER_ROW.FOLDERID, FOLDER_ROW.USERID);
END LOOP;
COMMIT;
END;
我对 sql 不是很熟悉,尤其是 not exists 语法,所以当我执行时出现以下错误:
ORA-06550:第 37 行,第 11 列:PLS-00103:遇到符号 “INSERT”当期望以下之一时:
然后和或
符号“then”被替换为“INSERT”以继续。
ORA-06550: line 38, column 10: PLS-00103: Encountered the symbol "LOOP" when expecting one of the following: if ORA-06550: line 40, column 5: PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: end not pragma final instantiable order overriding static member constructor map
【问题讨论】: