IBM SQL的下一问题价值

时间:2019-05-24 17:46:20

标签: sql db2 db2-400

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

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

EXEC SQL为@SOP_SEQ INTO:SEQ FROM @SOP_SEQ选择下一个值;

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

我尝试了第二行代码,并且在编译时收到此错误: 在* LIBL中找不到表@SOP_SEQ的SQL1103位置57列定义。

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

1 个答案:

答案 0 :(得分:1)

SELECT ... INTO需要一行,并且您没有提供任何内容,因此没有结果集。

有两种方法可以执行您想要的操作。

SELECT INTOSYSDUMMY1一起使用

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子句。