DB2 触发器时好时坏,请帮忙

cf7852 2008-09-24 12:45:30
运行时错误‘-2147217881’
[db2/nt]sql0723n 在触发器“dbhtnb.delmx”中的触发SQL语句发生错误,为 该错误返回的 消息包括SQLCODE"-952",SQLSTATE "57014"和消息标记"
SQLSTATE =09000




触发器代码:
CREATE TRIGGER DelMX AFTER DELETE ON YW_BX_FYMX REFERENCING OLD AS newmx FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
call DELFYHZ(newmx.yydm,newmx.ylbh,newmx.RYSPBH,newmx.tjm,newmx.fyje,newmx.ybje);
END
存储过程:

CREATE PROCEDURE DELFYHZ(IN L_YYDM VARCHAR(30),
IN L_ZYH VARCHAR(20),
IN L_LX VARCHAR(20),
IN L_TJM VARCHAR(10),
IN L_FYJE DECIMAL(18,2),
IN L_YBJE DECIMAL(18,2))
SPECIFIC SQL070830153514542
MODIFIES SQL DATA
NOT DETERMINISTIC
NULL CALL
LANGUAGE SQL
P1: BEGIN
UPDATE YW_BX_FYMXHZB SET ZFY=ZFY-L_FYJE ,ZFJE=ZFJE-(L_FYJE-L_YBJE),TCJE=TCJE-L_YBJE WHERE YYDM=L_YYDM AND ZYH=L_ZYH AND TJM=L_TJM AND LX=L_LX;
delete from YW_BX_FYMXHZB where zfy<=0;
END P1

当我删除YW_BX_FYMX 表用 "DELETE FROM YW_BX_FYMX "
的时候会出错
当我用ADO 循环删除的时候就正常,请高手指点,急啊,谢谢了
...全文
142 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyan93834183 2008-09-24
  • 打赏
  • 举报
回复
你是触发器调用存储过程
而你存储过程中也有
delete from YW_BX_FYMXHZB
这不又调用触发器了吗?
你能对吗?
王帆 2008-09-24
  • 打赏
  • 举报
回复
delete from table与ado循环删除区别是,一个一次删多条记录,一个一次删一条,结合报错信息,分析一下!
王帆 2008-09-24
  • 打赏
  • 举报
回复
sqlcode-952具体是什么?为什么不贴出来
liyan93834183 2008-09-24
  • 打赏
  • 举报
回复
表名很像,没看清楚,呵呵
cf7852 2008-09-24
  • 打赏
  • 举报
回复
触发器是建立在 表 YW_BX_FYMX上的,不是表 YW_BX_FYMXHZB 上的,哥们
PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES,现在已经更名为PostgreSQL. PostgreSQL支持大部分SQL标准并且提供了许多其它现代特性:复杂查询、外键、触发器、视图、事务完整性等。PostgreSQL 是一个免费的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和专有系统(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server)之外的另一种选择。事实上, PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;其次,PostgreSQL 是全功能的自由软件数据库,很长时间以来,PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统(MVCC)、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。 Inprise 的 InterBase 以及SAP等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。最后,PostgreSQL拥有一支非常活跃的开发队伍,而且在许多黑客的努力下,PostgreSQL 的质量日益提高。从技术角度来讲,PostgreSQL 采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由数据库服务器提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个 C 接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等, 同时也要指出的是,PostgreSQL 对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是 PostgreSQL 一大优点。本课程作为PostgreSQL数据库管理一,主要讲解以下内容: 1.     PostgreSQL 存储过程基本知识2.     PostgreSQL 用户自定义函数3.     PostgreSQL 控制结构4.     PostgreSQL 游标和存储过程5.     PostgreSQL 索引6.     PostgreSQL 视图7.     PostgreSQL 触发器8.     PostgreSQL 角色、备份和还原9.     PostgreSQL 表空间管理

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧