SQL存儲過程+事務 常用實例

以下存儲過程主要實現對某表新增一條數據的同時寫入日誌表

CREATE PROCEDURE [dbo].[MJ_SZPG]
	@發文日期  DATE  ,
	@拋光人員    NVARCHAR (50) ,
	@拋光機臺    NVARCHAR (50) ,
        @拋光時間    NVARCHAR (50) ,
	@請求      INT          ,
	@遞送速度    INT           ,
	@試做工單號   NVARCHAR (50),
	@主旨      NVARCHAR (50) ,
	@目的      INT          ,	
	@狀態      INT,	

        @人員工號 NVARCHAR (20),
        @姓名   NVARCHAR (20),
        @記錄信息 NVARCHAR (200),          
        @行為類型 NVARCHAR (50)  ,
        @備註   NVARCHAR (50), 
	
	@ReturnValue INT output--頁面傳參時注意標記  para[15].Direction = ParameterDirection.Output; 
<pre class="sql" name="code">  AS
declare  @時間  DATETIME =getdate()
declare @表單ID INT 
SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN TRANSACTION

	insert into [dbo].[MJ_試做聯絡單](發文日期,拋光人員,拋光機臺,拋光時間,請求,遞送速度,試做工單號,主旨,
	目的,狀態) values(@發文日期,@拋光人員,@拋光機臺,@拋光時間,@請求,@遞送速度,@試做工單號,@主旨,@狀態)

	set @表單ID=(select top 1 ID from [dbo].[MJ_試做聯絡單] order by ID desc)

	insert into [dbo].[MJ_行為日誌](表單名稱,人員工號,姓名,記錄信息,時間,表單ID,行為類型,備註) 
	values('MJ_試做拋光聯絡單',@人員工號,@姓名,@記錄信息,@時間,@表單ID,@行為類型,@備註)

	set @ReturnValue=@表單ID;
IF @@ERROR>0
BEGIN
ROLLBACK TRANSACTION
RAISERROR('請提交有效數據!',16,1)
RETURN 0
END

ELSE
COMMIT TRANSACTION  --執行未成功進行回


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章