在SqlServer中使用Try Catch(轉)


今天在寫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里面!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM