触发器中建立临时表

[复制链接]
查看11 | 回复4 | 2005-2-28 12:57:00 | 显示全部楼层 |阅读模式
在DB2的触发器中,如何建立临时表?
我用语法:
DECLARE GLOBAL TEMPORARY TABLE SESSION.TEMP_CARD_AMT

(

TCA_CARD_ID
DECIMAL(18,0),

TCA_CARD_STATUS
VARCHAR(1),

TCA_AMT
DECIMAL(12,3)

)

NOT LOGGED WITH REPLACE;
提示:
14:54:21.984
DBMS
SH_DATA -- [IBM][CLI Driver][DB2/NT] SQL0104N在 "DECLARE GLOBAL" 之后发现意外的标记 "TEMPORARY TABLE SESSION.TEMP_CARD_AMT"。期望的标记可能包括:""。LINE NUMBER=10.SQLSTATE=42601
这个是什么原因?
这个语法在存储过程中建立临时表是可以的。难道触发器与存储过程建立临时表不一样?
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
触发器不支持临时表,看能不能替换为with语句
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
Restrictions on the Use of Declared Global Temporary Tables: Declared global temporary tables cannot:
Be specified in an ALTER, COMMENT, GRANT, LOCK, RENAME or REVOKE statement (SQLSTATE 42995).
Be referenced in a CREATE ALIAS, CREATE FUNCTION (SQL Scalar, Table, or Row), CREATE TRIGGER, or CREATE VIEW statement (SQLSTATE 42995).
Be specified in referential constraints (SQLSTATE 42995).
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
多谢各位的说明,但是现在我要实现的功能是将一组通过Insert语句新增的数据进行汇总,然后将汇总的结果更新到一张实体表中。
比如:A表有一个字段a1,B表有一个字段b1。现在B表已经被批量新增了20条记录,现在要将这新增的20条记录中的b1字段的值汇总更新到a1上,如果不用临时表,还能有什么别的途径?
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
我也是同样的问题,关注。。。。。。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行