我有一个表,它有超过4百万条记录。所以我试图删除循环中的记录。下面是我尝试过的db2查询。
del_loop:
LOOP
DELETE FROM (
SELECT FROM BOM c
WHERE EXISTS (SELECT 1 FROM TESTOBJ t
WHERE c.OID = t.OID
) FETCH FIRST 1000 ROWS ONLY
)
IF SQLCODE = 100 THEN LEAVE del_loop;
END IF;
--COMMIT;
END LOOP loop;
但其投下误差
[Code: -104, SQL State: 42601] ILLEGAL SYMBOL "DEL_LOOP". SOME SYMBOLS THAT MIGHT BE LEGAL ARE: DECLARE. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.28.11
有人能帮我吗
2条答案
按热度按时间d8tt03nd1#
您需要遵循其中一种复合语句的语法规则:inlined或compiled中的一个或多个。
tgabmvqs2#
错误太多。
您必须使用所谓的复合语句和不同的语句分隔符,如示例中的
@
。下面的文本是针对Db2命令行处理器的,可以将其放置到某个文件中,并使用
db2 -f myfile.sql
执行,前提是您在当前会话中已连接到数据库。