11 มิถุนายน 2552

DB2 Throws Exception in Store Procedure

DB2 ไม่มีวิธี try catch หรือ throw exception ตรงๆ นะครับ วิธีการที่สามารถทำได้คือ การใช้ SIGNAL

CREATE PROCEDURE SP_THROW_MESSAGE(pInput smallint)
begin
if(pInput = 1) then
insert into tablename values('x');
else
--throw exception
SIGNAL SQLSTATE '99999' SET MESSAGE_TEXT = 'test throw exception';
end if;
end


call SP_THROW_MESSAGE(2)


หรือ ถ้าต้องการให้ throw exception หากเกิด exception จริงๆ ก็ เขียนแบบนี้ครับ

CREATE PROCEDURE SP_THROW_MESSAGE(pInput smallint)
begin

declare exit handler for sqlexception
p1:begin
SIGNAL SQLSTATE '12345' SET MESSAGE_TEXT = 'TEST';
end p1;

insert into tablename values('x');

end

call SP_THROW_MESSAGE()


โดย store นี้จะเข้าทำงาน ที่ คำสั่ง insert แต่หากมี exception เกิดขึ้นก็จะเข้าไปทำที่ signal ซึ่งถ้า program ที่เขียนมีการ try catch เอาไว้ก็จะได้ sqlException ออกมา

ไม่มีความคิดเห็น:

แสดงความคิดเห็น