SQL 2005 的存储过程和触发器调试
2011-08-25 13:30
288 查看
昨天晚上我找遍了互联网也没有发现关于SQL2005存储过程和触发器的调试方法,研究到凌晨2点多钟,终于找到方法了,不干独享,拿出来分享。如果要转载,请保留版权,谢谢!
在SQL2000中,我们想要调试存储过程非常简单,只需要在对象浏览器中找到存储过程,然后点击鼠标右键选择“执行(调试)”就可以弹出一个工具栏出来,进行调试。然而到了SQL2005中同样的操作却变成了生成一段SQL语法,没有调试功能,如果使用了Express版本会更加郁闷,连“执行”菜单都没有,如图所示:Express版本中,菜单中根本没有“执行”功能。
那么调试功能到什么地方去了呢?
别急,我找到了。原来微软把调试功能放在了VS2005中了。注意是VS2005,不是SQL2005,打开VS2005,选择工具、再选择“连接到数据库”。选择正确的数据库名和表名,填入正确的登陆信息就可以了,如图:
在"服务器资源管理“就可以看到写在数据库中的存储过程和触发器代码了,右击相应的存储过程,便可以看见”单步执行调试“的字样如图所示:如果这段存储过程可以触发”触发器“中代码,那么触发器的代码也是可以调试的。
我来举个例子调试一下。
1、在数据中建立一个表AllMoney
列 ID 类型 INT ,该字段为自增字段,每插入一条数据就增加一个。
列 MyMoney 类型 Money
2、在数据中建立一个表LastID
列 ALLMoneyID 类型为INT,该字段将通过触发起自动更新值,当表AllMoney每插入一列的时候,这个字段就自动更新为AllMoney中的最大ID值。
3、建立存储过程给AllMoney添加数据:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE SP_InsertMoney
@MyMoney AS MONEY
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO AllMoney(MyMoney) VALUES(@MyMoney)
END
GO
4、在表AllMoney中建立触发器,更新表LastID
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER INSERT_LastID
ON AllMoney
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON
DECLARE @ID AS INT
SELECT @ID = MAX(ID) FROM AllMoney
UPDATE LastID SET AllMoneyID=@ID
END
GO
当上面两个添加好后,然后再VS中来调试。
首先打开触发器代码。并设置断点:
然后选择存储过程,点击右键选择单步调试存储过程。
在弹出的对话框填入正确的参数:
这是就可以按F10来进行调试了,当数据插入成功后,就会触发”触发器“代码,前面我们在触发器中设置断点就会断下来了,如图:
还可以看见变量的值,很不错吧!
在SQL2000中,我们想要调试存储过程非常简单,只需要在对象浏览器中找到存储过程,然后点击鼠标右键选择“执行(调试)”就可以弹出一个工具栏出来,进行调试。然而到了SQL2005中同样的操作却变成了生成一段SQL语法,没有调试功能,如果使用了Express版本会更加郁闷,连“执行”菜单都没有,如图所示:Express版本中,菜单中根本没有“执行”功能。
那么调试功能到什么地方去了呢?
别急,我找到了。原来微软把调试功能放在了VS2005中了。注意是VS2005,不是SQL2005,打开VS2005,选择工具、再选择“连接到数据库”。选择正确的数据库名和表名,填入正确的登陆信息就可以了,如图:
在"服务器资源管理“就可以看到写在数据库中的存储过程和触发器代码了,右击相应的存储过程,便可以看见”单步执行调试“的字样如图所示:如果这段存储过程可以触发”触发器“中代码,那么触发器的代码也是可以调试的。
我来举个例子调试一下。
1、在数据中建立一个表AllMoney
列 ID 类型 INT ,该字段为自增字段,每插入一条数据就增加一个。
列 MyMoney 类型 Money
2、在数据中建立一个表LastID
列 ALLMoneyID 类型为INT,该字段将通过触发起自动更新值,当表AllMoney每插入一列的时候,这个字段就自动更新为AllMoney中的最大ID值。
3、建立存储过程给AllMoney添加数据:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE SP_InsertMoney
@MyMoney AS MONEY
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO AllMoney(MyMoney) VALUES(@MyMoney)
END
GO
4、在表AllMoney中建立触发器,更新表LastID
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER INSERT_LastID
ON AllMoney
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON
DECLARE @ID AS INT
SELECT @ID = MAX(ID) FROM AllMoney
UPDATE LastID SET AllMoneyID=@ID
END
GO
当上面两个添加好后,然后再VS中来调试。
首先打开触发器代码。并设置断点:
然后选择存储过程,点击右键选择单步调试存储过程。
在弹出的对话框填入正确的参数:
这是就可以按F10来进行调试了,当数据插入成功后,就会触发”触发器“代码,前面我们在触发器中设置断点就会断下来了,如图:
还可以看见变量的值,很不错吧!
相关文章推荐
- SQL 2005 的存储过程和触发器调试大法
- SQL 2005 的存储过程和触发器调试大法
- SQL 2005 的存储过程和触发器调试大法
- SQL 2005 的存储过程和触发器调试大法
- SQL 2005 的存储过程和触发器调试大法(转)
- sql 2005存储过程触发器出现 SQLNCLI" 返回了消息 "该伙伴事务管理器已经禁止了它对远程/网络事务的支持”解决
- SLQ SERVER 2005调试方法 包括T-SQL文、存储过程和触发器
- 如何查看SQL Server 2005使用with encryption 加密的存储过程或触发器,函数
- 在Visual Studio 2005中调试SQL Server 2005的存储过程
- SQL 2005 分页存储过程
- 设置SQL Server 2005允许远程调试存储过程
- 分页存储过程(只用于SQL2005)
- sql 2005 存储过程分页 java 代码
- SQL存储过程、函数、触发器、游标问答
- 在Visual Studio 2005中调试SQL Server 2005的存储过程
- SQL PLUS 调试存储过程
- sql 存储过程和触发器
- 学习数据库:SqlServer 2005之存储过程调试
- 在PL/SQL开发中调试存储过程和函数的一般性方法
- SQL语句查询存储过程 视图 所有表 触发器