[MSSQL]關於觸發器&存儲過程調試

在寫程序的時候通常我們經常會設置斷點,然後進行塊跟蹤或者單步跟蹤,或者直接輸出log或者直接添加快速監視器等方式。
存儲過程,比較好模擬本次忽略。
在相對複雜點或者年紀大腦子慢最好採取跟蹤方式:
1.撰寫觸發器:

GO
/****** Object:  Trigger [dbo].[UpdateTask]    Script Date: 2020/3/9 14:24:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<David Gong>
-- Create date: <2020-03-09>
-- Description:	<更新單據信息>
-- =============================================
CREATE TRIGGER [dbo].[UpdateDoc]
   ON  [dbo].[TaskLine] 
   For UPDATE
AS 
BEGIN

    --更新任務時,更新單據號
     DECLARE @DocumentCode as nvarchar(30)
	 DECLARE @Description as nvarchar(30)
     DECLARE @TaskCode as nvarchar(30)
	 DECLARE @FlowLevel AS INT
	 DECLARE @FinishDate AS DATETIME
	 DECLARE @ProductType AS NVARCHAR(20)
	 DECLARE @days AS INT 
	 DECLARE @ExpDate AS DATETIME


    SELECT @FlowLevel=FlowLevel,@TaskCode=t.TaskCode,@DocumentCode=DocumentCode,@Description=[Description],@FinishDate=FinishDate 
	       FROM INSERTED AS t INNER JOIN dbo.Task  ON Task.TaskCode = t.TaskCode 
	WHERE Stat='S' AND FlowLevel=2 --審批狀態S:審批中,第二層級
    
	IF @FlowLevel=2 AND UPDATE(FinishDate)
		BEGIN
		   IF(@Description='磁電報價') --磁電報價
		     BEGIN

				IF EXISTS(SELECT ProductType FROM  dbo.ZMQuotation WHERE SerialNo=@DocumentCode)
				BEGIN
					SELECT @ProductType=RTRIM(ProductType) FROM  dbo.ZMQuotation WHERE SerialNo=@DocumentCode
					IF(@ProductType IN ('普通變壓器','密封變壓器','高頻變壓器手工','高頻變壓器自動'))
						BEGIN
							SET @days=3
							SET @ExpDate=dbo.f_WorkDayADD(@FinishDate,@days) --計算工作日函數

							UPDATE dbo.ZMQuotation
							SET ExpDate=@ExpDate
							WHERE SerialNo=@DocumentCode
						END
					ELSE IF(@ProductType IN ('電源模塊'))
						BEGIN
							SET @days=7
							SET @ExpDate=dbo.f_WorkDayADD(@FinishDate,@days) --計算工作日函數
							UPDATE dbo.ZMQuotation
							SET ExpDate=@ExpDate
							WHERE SerialNo=@DocumentCode
						END
				END 

		     END
			
		END


	/*

END

  1. SSMS
    在這裏插入圖片描述
    3.語句調試後按F11
    在這裏插入圖片描述
    4.進入調試:F10 單步跟蹤(黃色部分),局部變量值直接顯示
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章