Sql Server 預存程序提示

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   io   os   使用   ar   

1、建立帶Try。。。Catch的預存程序模板

  Copy下面的代碼,然後建立查詢,就可以寫sql語句,執行完後,一個你自己的預存程序就建立好了!

USE [DB]--設定對應的資料庫GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- AUTHOR:-- DESCRIBE:-- =============================================CREATE PROCEDURE [dbo].[UP_InsertJHBData]   --預存程序名    (      @CustomerName VARCHAR(50)             --參數    )AS     BEGIN            SET NOCOUNT ON                     --提高效能的,必須要有        DECLARE @Now DATETIME        SET @Now = GETDATE()               --所有操作保證統一時間                BEGIN TRY         --在這裡寫SQL        END TRY                BEGIN CATCH                DECLARE @ErrorMessage NVARCHAR(4000) ;            DECLARE @ErrorSeverity INT ;            DECLARE @ErrorState INT ;                               SELECT  @ErrorMessage = ERROR_MESSAGE() ,                    @ErrorSeverity = ERROR_SEVERITY() ,                    @ErrorState = ERROR_STATE() ;            PRINT @ErrorMessage             RAISERROR(@ErrorMessage,  -- Message text.                        @ErrorSeverity, -- Severity.                        @ErrorState     -- State.                        ) ;            RETURN -1 ;        END CATCH    END
View Code

2、建立帶事務的預存程序模板

  只是將帶Try。。。Catch的預存程序的模板中加入了事務的控制,使用類似

USE [DB]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- AUTHOR:-- DESCRIBE:-- =============================================CREATE PROCEDURE [dbo].[UP_InsertJHBData]--預存程序名--參數    (      @CustomerName VARCHAR(50)    )--參數AS     BEGIN           SET NOCOUNT ON ;--提高效能的,必須要有        DECLARE @Now DATETIME ;        SET @Now = GETDATE() ;--所有操作保證統一時間               BEGIN TRY            BEGIN TRANSACTION myTrans ;--開始事務           --在這裡寫SQL           COMMIT TRANSACTION myTrans ;--事務提交語句        END TRY                BEGIN CATCH            ROLLBACK TRANSACTION myTrans-- 始終復原事務            --拋出異常            DECLARE @ErrorMessage NVARCHAR(4000) ;            DECLARE @ErrorSeverity INT ;            DECLARE @ErrorState INT ;            SELECT  @ErrorMessage = ERROR_MESSAGE() ,                    @ErrorSeverity = ERROR_SEVERITY() ,                    @ErrorState = ERROR_STATE() ;            RAISERROR(@ErrorMessage,  -- Message text.                 @ErrorSeverity, -- Severity.                 @ErrorState     -- State.                 ) ;        END CATCH    END
View Code

 3、迴圈模板

  在預存程序中,經常會產生一些暫存資料表,然後迴圈暫存資料表的資料進行處理,以下模板可以協助夥伴們快速處理此類需求

   --產生帶行號的暫存資料表資料,並插入暫存資料表#T_Table中    SELECT ROW_NUMBER() OVER (ORDER BY ID) AS RowNum,           NAME     INTO #T_Table    FROM TableName        --擷取記錄總數    DECLARE @RecordCount INT = 0        SELECT @RecordCount = COUNT(1) FROM #T_Table                    DECLARE @CurrRowNum INT = 1        --當前行號    DECLARE @CurrName VARCHAR(50)    --當前欄位        --迴圈記錄                WHILE @CurrRowNum <= @RecordCount         BEGIN            --擷取目前記錄            SELECT @CurrName = Name FROM #T_Table WHERE RowNum = @CurrRowNum                        --自訂sql                        SET @CurrRowNum = @CurrRowNum + 1 --到下一條記錄        END
View Code

 

Sql Server 預存程序提示

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.