[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 单步跟踪(黄色部分),局部变量值直接显示
    在这里插入图片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章