Monday, September 15, 2008

DB2 Try Catch Exception

หลายคนที่เขียน java หรือ .NET มาก็มีอึดอัดบ้างครับ
อยาก try/catch exception ใน database Oracle ก็ทำได้
แล้ว DB2 จะทำไม่ได้ได้ไง ดูตัวอย่างเลยครับ

สร้างตารางสำหรับทดลองก่อน
CREATE TABLE TB_EXCEPTION_TEST(
MESSAGE VARCHAR(10) NOT NULL,
ERROR VARCHAR(2000)
)


Example

CREATE PROCEDURE SP_HANDLE_EXCEPTION(
IN pMessage VARCHAR(10)
)
LANGUAGE SQL
RESULT SET 1
BEGIN
--Author: Mr.Fuangwith S.
DECLARE v_errmsg VARCHAR(2000);
DECLARE c1 CURSOR WITH RETURN FOR
SELECT
MESSAGE,
ERROR
FROM
TB_EXCEPTION_TEST
FOR READ ONLY;

--Display error message
DECLARE C2 CURSOR WITH RETURN FOR
SELECT v_errmsg AS ERROR_MSG FROM SYSIBM.SYSDUMMY1;

--Try catch exception
DECLARE EXIT HANDLER FOR SQLEXCEPTION
P1:BEGIN
GET DIAGNOSTICS EXCEPTION 1 v_errmsg = MESSAGE_TEXT;
INSERT INTO TB_EXCEPTION_TEST(
MESSAGE,
ERROR
)VALUES(
'ERROR',
v_errmsg
);
OPEN c2;
END P1;

INSERT INTO TB_EXCEPTION_TEST(
MESSAGE
)VALUES(
pMessage
);

OPEN c1;

END


Execute

CALL SP_HANDLE_EXCEPTION(NULL)


Output ที่ได้คือ error ที่เราได้ที่เกิดขึ้นนะครับ
สังเกตว่าเราสามารถจำมันมาใส่ table ได้
เพียงเท่านี้ก็คิดว่า หลายๆคนคงจะเอาไปพลิกแพลงใช้งานต่อ
ได้แล้วนะครับ

No comments: