Tuesday, April 27, 2010

How to retrieve result set from db2 DML statement

สำหรับ db2 หากใครต้องการที่จะ select ข้อมูลที่เราได้ทำการ insert/delete/update นั้นก็สามารถทำได้โดยการใช้

  • FINAL TABLE: ผลที่ได้จะเหมือนกับ NEW TABLE แต่เป็นการรับรองว่าผลที่ได้นี้เกิดขึ้นหลังจากทำ trigger แล้ว
  • NEW TABLE: ค่าใหม่ที่ถูก insert หรือ update
  • OLD TABLE: ข้อมูลเก่าที่ถูก delete

ดังตัวอย่างต่อไปนี้

sql statement:

SELECT * FROM FINAL TABLE (
INSERT INTO TB_HITME (MYKEY, MYMESSAGE) SELECT 1, 'ONE' FROM SYSCAT.TABLES FETCH FIRST 5 ROWS ONLY
)

หรือ

SELECT * FROM NEW TABLE (
INSERT INTO TB_HITME (MYKEY, MYMESSAGE) SELECT 1, 'ONE' FROM SYSCAT.TABLES FETCH FIRST 5 ROWS ONLY
)


result:

MYKEY MYMESSAGE
-------- ------------
1 ONE
1 ONE
1 ONE
1 ONE
1 ONE

sql statement:

SELECT * FROM FINAL TABLE (
UPDATE TB_HITME SET MYKEY = MYKEY + 1
)


result:

MYKEY MYMESSAGE
-------- ------------
2 ONE
2 ONE
2 ONE
2 ONE
2 ONE

sql statement:

SELECT * FROM OLD TABLE (
delete from tb_hitme
)

result:

MYKEY MYMESSAGE
-------- ------------
2 ONE
2 ONE
2 ONE
2 ONE
2 ONE

No comments: