多年来,为了调试存储过程,我使用了一种非常la脚的基本方法。我想知道是否有更现代的方法或工具可以使生活更轻松。
假设我们运行了存储过程
EXECUTE MyCoolProcedure 'Parameter1', 2, 'Parameter3', '2019-11-25'
它失败并显示错误
消息8134,级别16,状态1,过程MyCoolProcedure,第11行[批处理开始第0行]
除以零错误。
此Line 11
部分并不是特别有用,因为不清楚这些行的编号方式。
如果我在存储过程中单击修改,我会看到
USE [MyCoolDatabase]
GO
/****** Object: StoredProcedure [dbo].[MyCoolProcedure] Script Date: 11/26/2019 3:01:05 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[MyCoolProcedure]
(
@p1 varchar(20),
@p2 int,
@p3 varchar(30),
@p4 smalldatetime
)
AS
BEGIN
SELECT -- I bet it fails in here, Line #18
1 /
(@p2 - 2
);
END;
很明显,它在第18行中失败了,所以我们可能只需要在显示的任何行号上添加 7 即可。但是您会发现这就像一条经验法则。
但是我们假装这里并没有那么明显,所以我们需要摆一些调试语句来找出错误所在
现在写的是我复制过程声明的全部内容并就地编辑它
ALTER PROCEDURE [dbo].[MyCoolProcedure] DECLARE
(
@p1 varchar(20) = 'Parameter1',
@p2 int = 2,
@p3 varchar(30) = 'Parameter3',
@p4 smalldatetime = '2019-11-25'
)
AS
BEGIN
SELECT -- I bet it fails in here, Line #18
1 /
(@p2 - 2
);
END;
这有点耗时和烦人。理想情况下,作为Visual Studio用户,我希望具有类似附加到处理过程和打破错误功能之类的功能。
我做错了吗?有没有更有效的方法来执行这些重复性任务?