今天在寫sql中出現了!我想在sql使用trycatch吧! 哎..但是語法又記不住了! 那就清楚我們的google大師吧! 嘿,網上關於在sql中使用Try Catch的還有真不少的文章! 閑話就少了! 今天記錄下來以便下次使時查閱!
創建錯誤日志表:
CREATE TABLE ErrorLog(errNum INT,ErrSev NVARCHAR(1000),ErrState INT,ErrProc NVARCHAR(1000),ErrLine INT, ErrMsg NVARCHAR(2000))
創建錯誤日志記錄存儲過程:
CREATE PROCEDURE ErrorLog AS SELECT ERROR_NUMBER() AS ErrNum,ERROR_SEVERITY()AS ErrSev,ERROR_STATE() AS ErrState,ERROR_PROCEDURE() AS ErrProc,ERROR_LINE()AS ErrLine,ERROR_MESSAGE()AS ErrMsg INSERT INTO ErrorLog VALUES(ERROR_NUMBER(),ERROR_SEVERITY(),ERROR_STATE(),ERROR_PROCEDURE(),ERROR_LINE(),ERROR_MESSAGE()) GO
寫一個存儲過程吧!里面使用一下Try Catch:
USE [Your_Test] GO /****** Object: StoredProcedure [dbo].[getTodayBirthday] Script Date: 05/17/2010 15:38:46 Author:jinho Desc:獲?取?當?天?生?日?的?所?有?人? ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[getTodayBirthday] AS BEGIN TRY declare @today datetime; SET @today = GETDATE();--獲?取?今?天?的?日?期? DECLARE @day VARCHAR(2); SET @day =REPLACE(DAY(@today),0,''); DECLARE @month VARCHAR(2) ; SET @month = REPLACE(month(@today),0,''); DECLARE @year VARCHAR(4); SET @year = YEAR(@today); SELECT * FROM dbo.UserInfo WHERE REPLACE(DAY(CONVERT(DATETIME,Birthday )),0,’’) =@day AND REPLACE(MONTH(CONVERT(DATETIME,Brithday)),0,’’)=@month AND Birthday IS NOT NULL
END TRY BEGIN CATCH ErrorLog --調用上面的存儲過程,保存錯誤日志 END CATCH 說明:ERROR_NUMBER(),ERROR_SEVERITY(),ERROR_STATE(),ERROR_PROCEDURE(),ERROR_LINE(),ERROR_MESSAGE() 這幾個函數只能用在Catch里面!