我尝试编写一个循环,基本上是为了对DB2 Z/OS执行批量插入。在引用了这个article之后,我尝试使用以下代码:
BEGIN
DECLARE varcnt;
set varcnt int DEFAULT 0;
WHILE varcnt <= 10 DO
insert into HEROI.TESTD (PK,XML_TYPE) values(varcnt+1,'<test>Hello World</test>');
SET varcnt = varcnt + 1;
END WHILE ;
END;
但上面给出了如下错误:
非法符号“VARCNT”。可能合法的符号包括:部分。SQL代码= -104,SQL状态=42601,驱动程序=4.28.11 SQL代码:-104,SQL状态:42601错误发生于:开始声明变量
我使用了DBeaver、TOAD和SQL Squirrel客户端,以为这可能是客户端的问题,但似乎不是。我使用的DB2 Z/OS版本是DSN 12015。
如果能在这里获得一些关于如何多次运行此INSERT语句的帮助,我将非常高兴。
2条答案
按热度按时间ma8fv8wu1#
Db2 for z/OS中的Compound statements仅在例程和触发器中受支持。
您不能将它们作为独立语句使用。
您的
DECLARE
和SET
语句是错误的-您没有在DECLARE
中提供数据类型,而在SET
中提供。它应该是:至于你的情况,你可以用一句话来做同样的事情:
6qftjkof2#
感谢Mark,您的解决方案和文档参考确实帮了大忙。
我想添加前面介绍的有关生成数据的存储过程: