IBM DB2错误sql代码-724&;sql状态54038
我试图向表中插入一些示例数据,但db2命令行处理器返回消息“DB21034E”。该命令作为SQL语句处理,因为它不是 有效的命令行处理器命令。在SQL处理过程中,它返回: SQL0723N触发器中触发的SQL语句出错 “EDWIN.CALLCQ”。返回的错误信息包括IBM DB2错误sql代码-724&;sql状态54038,db2,db2-express-c,Db2,Db2 Express C,我试图向表中插入一些示例数据,但db2命令行处理器返回消息“DB21034E”。该命令作为SQL语句处理,因为它不是 有效的命令行处理器命令。在SQL处理过程中,它返回: SQL0723N触发器中触发的SQL语句出错 “EDWIN.CALLCQ”。返回的错误信息包括SQLCODE“-724”, SQLSTATE“54038”和消息令牌“EDWIN.CHKQUANTITY | PROCEDURE”。 SQLSTATE=09000“ 这是我的程序 create procedure chkQuanti
SQLCODE“-724”
,
SQLSTATE“54038”
和消息令牌“EDWIN.CHKQUANTITY | PROCEDURE”。
SQLSTATE=09000“
这是我的程序
create procedure chkQuantity (Cart_ID int,Food_ID int, Food_Quantity int)begin declare c cursor with return for select sum(Food_Quantity) from Cart_details group by Cart_ID;open c; If(Food_Quantity <= 10)then insert into cart_details(Cart_ID,Food_ID,Food_Quantity) values (Cart_ID , Food_ID ,Food_Quantity);Else signal sqlstate'45000' set message_text = '1 Cart Maximum order only 10 food Quantity' ;delete from cart_details where cart_details_id=cart_details_id; end if;close c; end
桌子
create table Cart\u Details(Cart\u Details\u ID int not null主键、Cart\u ID int、外键(Cart\u ID)引用Cart、Food\u ID int、外键(Food\u ID)引用Food、Food\u数量int check(Food\u quantity消息的描述清楚地说明:
SQL0724N
将激活类型为object type的对象名称
超过间接SQL级联的最大级别
解释
当触发器激活另一个触发器时,会发生间接SQL的级联
触发器(可能通过引用约束删除规则)或
包含SQL的例程调用另一个例程
触发器的级联限制为16,例程的级联限制为64
一个触发器包含一个触发的SQL语句的递归情况
直接或间接导致相同触发器被激活的语句
激活,或者例程直接或间接调用自身,
是一种级联形式,如果
没有条件防止级联超过限制。
对象类型是触发器、函数、方法或过程之一
指定的对象名是本应
在级联的第十七级激活
用户响应
从以下语句激活或调用的对象开始:
收到此错误。如果其中任何对象是递归的,请确保
存在某种条件阻止对象
激活或调用的数量超过了允许的限制。如果这不是
导致问题的原因,请遵循激活的对象链
或调用以确定超出级联限制的链
在insert
触发器之后调用一个例程,在表中插入一行。这会导致此触发器的递归调用超过允许的级联调用数。包含实际的错误消息,而不仅仅是它包含的错误代码会很有用。至于您的过程逻辑,您应该知道e如下。不使用fetch
的游标是无用的:您不能将其结果仅用于open/close语句。您可以使用delete from cart\u details其中cart\u details\u id=cart\u details\u id
语句删除表中的所有行,因为如果您的列和参数名相等,则该名称将被视为列我找到了一个修复方法,只需从过程中删除总和,并将其更改为计数即可
create trigger callCQ after insert on cart_details referencing new as N for each row mode db2sql call chkQuantity(N.Cart_ID, N.Food_ID, N.Food_Quantity)
create table Cart_Details(Cart_Details_ID int not null primary key ,Cart_ID int , Foreign Key(Cart_ID) references Cart,Food_ID int,foreign key(Food_ID) references Food, Food_quantity int check(food_quantity <= 10))