標籤: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 預存程序提示