我正在尝试编写一个简单的查询来获取序列号。
EXEC SQL SELECT NEXT VALUE FOR @SOP_SEQ INTO:
EXEC SQL SELECT NEXT VALUE FOR SEQ INTO:@SOP_SEQ FROM @SOP_SEQ;
在第一行代码中,我甚至在可以编译之前就得到了一条错误消息: SQL0104令牌无效。有效令牌:,发件人
我尝试了第二行代码,但在编译时得到以下错误:找不到*LIBL中表@SOP_SEQ的位置57列定义。
有人能指出我哪里做错了吗?
发布于 2019-05-25 02:37:43
SELECT ... INTO
需要一个行来运行,而您没有提供任何行,因此没有结果集。
有两种方法可以做你想做的事情。
在SYSDUMMY1
中使用SELECT INTO
select next value for @sop_seq
into :seq
from sysibm/sysdummy1;
或者更好的方法是使用不需要引用SYSDUMMY1
的VALUES INTO
values next value for @sop_seq
into :seq;
SYSIBM/SYSDUMMY1
是一个只有一条记录的目录文件,在VALUES INTO
出现之前,通常用于在需要一行时将计算值检索到结果集中,并且没有适用的真正的表引用(就像这里的情况一样)。这种技术仍然在使用,但我建议改用VALUES INTO
,因为不需要人工的FROM
子句。
https://stackoverflow.com/questions/56297368
复制相似问题