Tuesday, May 26, 2009

Check error statement in store procedure mssql


CREATE TABLE [dbo].[table_1](
[username] [varchar](50) NOT NULL,
[password] [varchar](50) NULL,
CONSTRAINT [PK_table_1_1] PRIMARY KEY CLUSTERED
(
[username] ASC
)
) ON [PRIMARY]
----------------------------------------

declare @intErrorCode int

----------------------------------------
INSERT INTO [dbname].[dbo].[table_1]
([username]
,[password])
VALUES
('1'
,'a')

if @@error <> 0
begin
print 'Have error 1.'
end
else
print 'Not have error 1.'

----------------------------------------

INSERT INTO [dbname].[dbo].[table_1]
([username]
,[password])
VALUES
('2'
,'b')

SELECT @intErrorCode = @@ERROR

if @intErrorCode <> 0
begin
print 'Have error 2.'
end
else
print 'Not have error 2.'

----------------------------------------

INSERT INTO [dbname].[dbo].[table_1]
([username]
,[password])
VALUES
('2'
,'b')

SET @intErrorCode = @@ERROR

if @intErrorCode <> 0
begin
print 'Have error 3.'
end
else
print 'Not have error 3.'
----------------------------------------
ข้อสังเกตจากด้านบน
  1. @@errror น่าจะเป็นตัวแปรของระบบ สำหรับเก็บค่าของ statement ว่าผลการทำงานเป็นอย่างไร
  2. เราสามารถกำหนดค่าจาก @@errror ให้ตัวแปรเราโดย set @param = @@errror หรือ select @param = @@error ได้ทั้งสอง แต่ส่วนมาใช้ select นะ อันนี้ไม่แน่ใจ
  3. เราต้องวาง การตรวจสอบ error ของ statement ทุกตัวสมมุติถ้ามี insert statement 3 อัน แล้วถ้า 1 และ 3 insert ได้แต่ 2 ไม่สามารถ insert ได้ ถ้าเราวาง if @error = 0 ไว้ต่อท้าย statement 3 แค่อันเดียวจะทำให้ @@error จะเป็น 0 นะ ถึง statement 2 จะ error แต่ 3 ไม่ error หว่า ระวังตรงนี้อ่ะ



  • สงสัยการทำ ต้องใช้ try catch ประกอบซะแหละ ตรวจสอบทุก statement คงไม่ใหว

Related

No comments:

Post a Comment

Popular Posts