我正在尝试编写一个简单的查询来获取序列号。
@SOP_SEQ的EXEC SQL选择下一个值INTO:SEQ;
EXEC SQL为@SOP_SEQ INTO:SEQ FROM @SOP_SEQ选择下一个值;
在第一行代码中,我什至在编译之前会收到一条错误消息:SQL0104令牌无效。有效令牌:,FROM
我尝试了第二行代码,并且在编译时收到此错误: 在* LIBL中找不到表@SOP_SEQ的SQL1103位置57列定义。
有人可以指出我在做什么吗?
答案 0 :(得分:1)
SELECT ... INTO
需要一行,并且您没有提供任何内容,因此没有结果集。
有两种方法可以执行您想要的操作。
将SELECT INTO
与SYSDUMMY1
一起使用
select next value for @sop_seq
into :seq
from sysibm/sysdummy1;
或者更好的方法是使用VALUES INTO
,它不需要引用SYSDUMMY1
values next value for @sop_seq
into :seq;
tldr;
SYSIBM/SYSDUMMY1
是具有单个记录的目录文件,并且在VALUES INTO
可用之前,通常用于在需要单行且没有实际表引用的情况下将计算值检索到结果集中。适用(根据您的情况)。仍然使用此技术,但我建议您改用VALUES INTO
,因为不需要人工FROM
子句。