使用以下代码创建存储过程时,报42601错误,
declare continue handler for sqlstate not found set v_end = 1;
declare c1 cursor with hold for select * from tab1;
Error:在 "" 后面找到异常标记 "<cursor declaration>"。预期标记可能包括:"<SQL statement>"。. SQLCODE=-104, SQLSTATE=42601
语句本身没有问题的,排查了半天,才发现是个db2 比较恶心的规定导致的:DB2 声明变量要有序的要求:首先声明:普通变量;其次声明:游标;最后声明:condition handler。
将游标的声明位置放到handler之前,问题解决:
declare c1 cursor with hold for select * from tab1;
declare continue handler for sqlstate not found set v_end = 1;
浙公网安备 33010602011771号