简体   繁体   English

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

[英]Error SQLCODE -138 when doing a trigger in DB2

I get the following error trying to create a stored procedure in DB2 我在尝试在DB2中创建存储过程时遇到以下错误

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

My trigger is the following one: 我的触发器是以下触发器:

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

According to the DB2 SQLCodes list, -138 根据DB2 SQLCodes列表,-138

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

What I want to do is to substract a string from another when it finds a "-". 我想做的就是在找到“-”时从另一个字符串中减去一个字符串。 For example, the code is "ART00001-A" and I would like to get just "ART00001". 例如,代码为“ ART00001-A”,而我​​只想获取“ ART00001”。

I'm not an expert in DB2 SQL syntax, so please,thanks in advance if you see the problem in that code. 我不是DB2 SQL语法方面的专家,因此,如果您看到该代码中的问题,请先感谢。

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 DB2错误SQLCODE = -103,SQLSTATE = 42604 - DB2 Error SQLCODE=-103, SQLSTATE=42604 DB2 jdbc SQL 错误:SQLCODE=-302,SQLSTATE=22001 on Select - DB2 jdbc SQL Error: SQLCODE=-302, SQLSTATE=22001 on Select DB2 SQL错误:SQLCODE = -204,SQLSTATE = 42704 - DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704 Db2 .SqlIntegrityConstraintViolationException:SQLCODE = -803,SQLSTATE = 23505 - Db2 .SqlIntegrityConstraintViolationException: SQLCODE=-803, SQLSTATE=23505 com.ibm.db2.jcc.am.io:DB2 SQL错误:SQLCODE = -440,SQLSTATE = 42884 - com.ibm.db2.jcc.am.io: DB2 SQL Error: SQLCODE=-440, SQLSTATE=42884 在DB2中插入期间SQLCODE = -723 - SQLCODE=-723 during insertions in DB2 SQL查询的准备好的语句,错误DB2 SQL错误:SQLCODE = -206,SQLSTATE = 42703 - Prepared statement for SQL query, error DB2 SQL Error: SQLCODE=-206, SQLSTATE=42703 在具有DB2并行进程的Java中:我出现了死锁异常:DB2 SQL错误:SQLCODE = -911,SQLSTATE = 40001,SQLERRMC = 2,DRIVER = 3.59.81 - In java with DB2 parallel process: I got Deadlock Exception :DB2 SQL Error: SQLCODE=-911, SQLSTATE=40001, SQLERRMC=2, DRIVER=3.59.81 插入并选择Select Give sql-error(SQLCODE = -803,SQLSTATE = 23505)(db2 z / os) - Insert with Select give sql-error (SQLCODE=-803, SQLSTATE=23505)(db2 z/os) 准备好的语句失败,并出现DB2 SQL错误:SQLCODE:-401,SQLSTATE:42818 - Prepared Statement failing with DB2 SQL error: SQLCODE: -401, SQLSTATE: 42818
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM