在寫程序的時候通常我們經常會設置斷點,然後進行塊跟蹤或者單步跟蹤,或者直接輸出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
- SSMS
3.語句調試後按F11
4.進入調試:F10 單步跟蹤(黃色部分),局部變量值直接顯示