【发布时间】:2011-12-02 12:12:32
【问题描述】:
我正在尝试使下面的 sql 查询正常工作,但出现错误,我的问题如下:
我需要遍历一个 select 语句的结果集(这部分很好)。在每一行的循环内,我需要检查 URL 是否存在于 tableA 中。如果是,则在 tableB 中插入一个映射,否则在 tableC 中插入一个新行。
这就是我所拥有的,但是当我尝试执行时,我在 IF 说 ORA-06550:第 8 行,第 15 列:PLS-00103:遇到符号“SELECT”时遇到了一个错误以下:( - + case mod new no.....
DECLARE
STANDARD_LINK_ID TABLEB.LINK_ID%type;
BEGIN
FOR LINK_ROW IN ( SELECT LINKTEXT, LINKURL, CORPID FROM OLD_DATA)
LOOP
IF (SELECT COUNT(URL) FROM TABLEA WHERE URL = LINK_ROW.LINKURL) = 1
THEN
SELECT LINKID INTO STANDARD_LINK_ID FROM TABLEA WHERE URL = LINK_ROW.URL;
INSERT INTO TABLEB(LINK_ID, CORP_ID)
VALUES (STANDARD_LINK_ID, LINK_ROW.CORPID);
ELSE
INSERT INTO TABLEB(LINK_ID, LINK_NAME, URL, CORP_ID)
VALUES (SEQ_LINK.NEXTVAL, LINK_ROW.LINKTEXT, LINK_ROW.LINKURL,
LINK_ROW.CORP_ID);
END IF;
END LOOP;
COMMIT;
END;
【问题讨论】: