gpt4 book ai didi

java - 在 DB2 中执行触发器时出现错误 SQLCODE -138

转载 作者:行者123 更新时间:2023-12-02 07:06:44 26 4
gpt4 key购买 nike

尝试在 DB2 中创建存储过程时出现以下错误

Error report:
DB2 SQL error: SQLCODE: -138, SQLSTATE: 22011, SQLERRMC: null

我的触发器如下:

CREATE TRIGGER INSERT_SERIALNUMBER
AFTER INSERT ON LASERM
REFERENCING NEW ROW AS NROW
FOR EACH ROW MODE DB2SQL
BEGIN
DECLARE ARTICLECODE CHAR(30);
DECLARE POS INT;
SET POS = LOCATE('-', NROW.PROGRAMNAME);

IF POS > 0 THEN
SET ARTICLECODE = SUBSTR(NROW.PROGRAMNAME, 0, POS);
ELSE
SET ARTICLECODE = NROW.PROGRAMNAME;
END IF;
CALL SP_INSERT_SERIALNUMBER(ARTICLECODE, NROW.PCBCODE);
END

根据 DB2 SQLCodes 列表,-138

-138 THE SECOND OR THIRD ARGUMENT OF THE SUBSTR OR SUBSTRING FUNCTION IS OUT OF RANGE

我想要做的是当找到“-”时从另一个字符串中减去一个字符串。例如,代码是“ART00001-A”,我只想获取“ART00001”。

我不是 DB2 SQL 语法方面的专家,所以如果您在该代码中发现问题,请提前致谢。

最佳答案

DB2 中的字符串位置是从 1 开始的,但您指示的是从位置 0 开始的子字符串。只需使用:

SET ARTICLECODE = SUBSTR(NROW.PROGRAMNAME, 1, POS);

关于java - 在 DB2 中执行触发器时出现错误 SQLCODE -138,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16010120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com