存储一个值,加 1 并在使用 Db2 的插入中使用它

问题描述 投票:0回答:0

我在 Db2 数据库上工作,目标是使用复合键(T1CATEGORIA、T1SEDE、T1CERTIFICATO)将最大值存储在 T1PROG 列中,加 1,然后将记录插入同一个表中。

我在这个问题上尝试了很多方法,我能找到的“最有效”的解决方案是这个

CREATE VARIABLE t1prog CHAR;
CREATE VARIABLE result INT;
SELECT MAX(T1PROG) INTO t1prog FROM MYSCHEMA.MYTABLE WHERE T1SEDE = 'abcd' AND T1CATEGORIA = 'abc' AND T1CERTIFICATO = 'numCertPe';
SELECT CAST(t1prog AS INT) INTO result;
SET result = result + 1;
SELECT CAST(result AS CHAR) INTO t1prog;
INSERT INTO MYSCHEMA.MYTABLE (T1CATEGORIA, T1SEDE, T1CERTIFICATO, T1PROG) VALUES ('abc','abcd','numCertPe',t1prog);
DROP VARIABLE t1prog;
DROP VARIABLE result;

但是 db2 不识别关键字 INTO 并给我这个错误:(即使 IBM 文档将 SELECT INTO 语句列为有效)

ERROR [42601] [IBM][DB2/LINUXX8664] SQL0109N 未处理语句或命令,因为在使用它的上下文中不支持以下子句:“INTO”。

有一个转换,因为 T1PROG 是一个 char 列 我不能使用函数或存储过程或修改数据库。

编辑。
我给出了一些额外的上下文,这是一个已经存在的事务的一部分,无法修改指令,我的目标是制作一段代码,通过从数据库中读取一堆数据并从中自动生成 db2 语言的查询一个 JSON。 我以某种方式设法编写了所有必要的代码来创建除这部分之外的所有指令(取最大值,加一个并将其放回新记录中)。 这真的让我发疯。 我正在为 luw 开发 db2.core

db2
© www.soinside.com 2019 - 2024. All rights reserved.