原來SQL也有try-catch

來源:互聯網
上載者:User
        今天看項目範例程式碼,預存程序裡也有寫try-catch代碼塊,覺得很新鮮,不知道是不是SQL 2005的新文法(以前一直用2000),代碼如下

CREATE PROC [dbo].[p_TNoticeAdmin_RowByLastModifyDate]
    @intNoticeAdminID INT
AS

SET NOCOUNT ON;

-- �������� Declare
DECLARE @btResult BIT; --������ ���� ���� (0: ����, 1: ����)

-- MAIN CODE: Begin

BEGIN TRY

    SELECT ModifyDate FROM TNoticeAdmin
    WHERE NoticeAdminID = @intNoticeAdminID
        
    SET @btResult = 0;
  
END TRY
BEGIN CATCH
    
    DECLARE @strErrContent VARCHAR(50),
        @intErrorNumber INT,
        @intErrorSeverity INT,
        @intErrorState INT,
        @strErrorProcedure NVARCHAR(126),
        @intErrorLine INT,
        @strErrorMessage NVARCHAR(4000);
    
    SET @strErrContent = '�������� ȯ�������� ���������� ���� �б� ó�� ����';
    SET @intErrorNumber = ERROR_NUMBER();
    SET @intErrorSeverity = ERROR_SEVERITY();
    SET @intErrorState = ERROR_STATE();
    SET @strErrorProcedure = ERROR_PROCEDURE();
    SET @intErrorLine = ERROR_LINE();
    SET @strErrorMessage = ERROR_MESSAGE();

    EXEC p_TDBErrLog_Create @strErrContent, @intErrorNumber, @intErrorSeverity, @intErrorState, 
        @strErrorProcedure, @intErrorLine, @strErrorMessage;

    RAISERROR(@strErrorMessage, @intErrorSeverity, @intErrorState, @strErrorProcedure, @intErrorLine);

    SET @btResult = 1;
END CATCH

        呵呵,雖然SQL 2008都要出來了,做了次小白,但這也是一大收穫。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.