在写程序的时候通常我们经常会设置断点,然后进行块跟踪或者单步跟踪,或者直接输出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 单步跟踪(黄色部分),局部变量值直接显示