數據庫觸發器Trigger或者存儲過程Procedure的調試技巧
use Print
很生氣,后果很嚴重的讓時間飛逝。
網上眾多大拿推薦使用Raiserror,于是
很生氣,后果很嚴重的讓時間飛逝。
于是,很無語胡亂的測試:
我得找到這個原因:
翻翻MSDN吧:
但是呢,為了不拋錯誤,我們可以做以下2種方案:
方案一:
不知道try catch是不是能幫上忙,就留在下回測試吧。
f
PRINT 'testing----' WAITFOR DELAY '00:00:05';
程序中調用這個procedure或者觸發這個trigger,java控制臺根本沒有這個輸出;很生氣,后果很嚴重的讓時間飛逝。
網上眾多大拿推薦使用Raiserror,于是
raiserror ('test raiserror 1---', 10, -1) with log
raiserror ('test raiserror 2---', 10, 1) with nowait
程序中調用這個procedure或者觸發這個trigger,java控制臺根本沒有這個輸出;raiserror ('test raiserror 2---', 10, 1) with nowait
很生氣,后果很嚴重的讓時間飛逝。
于是,很無語胡亂的測試:
raiserror ('test raiserror 3---', 16,-1) with log;
raiserror ('test raiserror 4---', 16,-1) with nowait;
任何一條都輸出并且讓程序回滾,很好很好raiserror ('test raiserror 4---', 16,-1) with nowait;
我得找到這個原因:
翻翻MSDN吧:
A RAISERROR severity of 11 to 19 executed in the TRY block of a TRY…CATCH construct causes control to transfer to the associated CATCH block. Specify a severity of 10 or lower to return messages using RAISERROR without invoking a CATCH block. PRINT does not transfer control to a CATCH block.
好吧,10以上的數字才會強迫它工作。但是呢,為了不拋錯誤,我們可以做以下2種方案:
方案一:
建立tmp表,利用insert保存你要的結果
方案二:不知道try catch是不是能幫上忙,就留在下回測試吧。
f
posted on 2013-04-10 20:05 crazycy 閱讀(1423) 評論(0) 編輯 收藏 所屬分類: DBMS