IBM SQL 下一个发行价值

IBM SQL Next Value for issue

我正在尝试编写一个简单的查询来获取序列号。

EXEC SQL SELECT @SOP_SEQ 的下一个值 INTO :SEQ ;

EXEC SQL SELECT @SOP_SEQ 的下一个值 INTO :SEQ FROM @SOP_SEQ;

在第一行代码中,我什至在编译之前收到一条错误消息:SQL0104 令牌无效。有效标记:, FROM

我试了第二行代码,编译时出现这个错误: SQL1103 未找到 *LIBL 中 table @SOP_SEQ 的位置 57 列定义。

有人可以指出我做错了什么吗?

SELECT ... INTO 需要一行来 运行 反对,而您没有提供任何内容,因此您没有结果集。

有两种方法可以做你想做的事。

SELECT INTOSYSDUMMY1

结合使用
select next value for @sop_seq
  into :seq
  from sysibm/sysdummy1;

或者,更好的是,使用不需要引用 SYSDUMMY1

VALUES INTO
values next value for @sop_seq
  into :seq;

tldr; SYSIBM/SYSDUMMY1 是一个只有一条记录的目录文件,在 VALUES INTO 可用之前,通常用于在需要单行时将计算值检索到结果集中,并且没有真正的 table 适用的参考资料(如您在此处的情况)。这种技术仍在使用,但我建议使用 VALUES INTO 代替,因为不需要人为的 FROM 子句。