首页 > 数据库 >SQL 2005 的存储过程和触发器调试大法

SQL 2005 的存储过程和触发器调试大法

时间:2022-11-27 11:37:28浏览次数:50  
标签:触发器 AllMoney SQL 存储 SET 2005 GO 调试


SQL 2005 的存储过程和触发器调试大法(原创)


       在SQL2000中,我们想要调试存储过程非常简单,只需要在对象浏览器中找到存储过程,然后点击鼠标右键选择“执行(调试)”就可以弹出一个工具栏出来,进行调试。然而到了SQL2005中同样的操作却变成了生成一段SQL语法,没有调试功能,如果使用了Express版本会更加郁闷,连“执行”菜单都没有,如图所示:Express版本中,菜单中根本没有“执行”功能。



SQL 2005 的存储过程和触发器调试大法_存储过程



那么调试功能到什么地方去了呢?


别急,我找到了。原来微软把调试功能放在了

VS2005中了。 注意是VS2005,不是SQL2005,打开VS2005,选择工具、再选择“连接到数据库”。选择正确的数据库名和表名,填入正确的登陆信息就可以了,如图:



SQL 2005 的存储过程和触发器调试大法_浏览器_02


在"服务器资源管理“就可以看到写在数据库中的存储过程和触发器代码了,右击相应的存储过程,便可以看见” 单步执行调试“的字样如图所示:如果这段存储过程可以触发”触发器“中代码,那么触发器的代码也是可以调试的。



SQL 2005 的存储过程和触发器调试大法_触发器_03


我来举个例子调试一下。

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中来调试。


SQL 2005 的存储过程和触发器调试大法_SQL_04


首先打开触发器代码。并设置断点:


SQL 2005 的存储过程和触发器调试大法_触发器_05

然后选择存储过程,点击右键选择单步调试存储过程。

在弹出的对话框填入正确的参数:


SQL 2005 的存储过程和触发器调试大法_Go_06


这是就可以按F10来进行调试了,当数据插入成功后,就会触发”触发器“代码,前面我们在触发器中设置断点就会断下来了,如图:


SQL 2005 的存储过程和触发器调试大法_存储过程_07


标签:触发器,AllMoney,SQL,存储,SET,2005,GO,调试
From: https://blog.51cto.com/u_15834343/5889887

相关文章

  • 【MySQL】记一次复杂数据查询排重
    事原在某一次仿真环境测试过程中发现数据列表中出现重复条目,如下图:经过排查后发现,用户登录后cust_id(企业id)字段做了mybatis的动态语句判断。其中出现问题的SQL脚本如下:SELEC......
  • sqlServer取余数
    https://zhidao.baidu.com/question/619228487244788132.html这个是sqlserver数据库中取余的方法比如: 其中100是被除数,3是除数......
  • Failed to start mysqld.service: Unit not found
    转载自:https://blog.csdn.net/miaodichiyou/article/details/99289160 ========================= 很多人对本博客的方法提出了质疑,在此我解释一下:由于MySQL在CentO......
  • lightdb/postgresql中的事务回卷原理解析及避免
    在pg中,由于事务id采用32位实现,所以是采用循环复用的,如下:  虽然最大支持4billion个事务(32位无符号数,xid最大可以到40亿),但是新老事务相差2billion是上限,当达......
  • 转:配置 SQL Server 2005 远程调试存储过程
    VS调试SQL存储过程的时候提示被用户取消 问题:   您工作的本机装有VisualStudio2005,局域网中有一台SQLServer2005数据库服务器,你想通过本机远程调试SQLServe......
  • 记录一次MySQL主从同步
    主库配置server-id=1log-bin=mysql-binbinlog_format=ROWbinlog_row_image=minimalbinlog-do-db=yjtb-cloud解释一哈,server-id必须要唯一,如果你的数据库没有特意配置事务......
  • 二进制安装Mysql数据库的快速方法
    二进制安装Mysql数据库的快速方法摘要还是国产操作系统rpm包可能不太兼容,为了简单准备使用tar包方式安装mysql数据库这里简单记录一下过程.为以后使用.介质下载......
  • sql92和SQL99的区别
    SQL92和SQL99都是用来表示多表的联合查询使用的,两者在开发中,具体使用哪一种都是可以的,但是在书写和阅读的过程中,具体表现在以下:1、笛卡尔积中的区别①SQL92中的笛卡尔积:s......
  • MySQL安装详细教程
    mysql是一个关系型数据库软件,由瑞典MySQLAB公司开发,目前属于Oracle公司。为什么使用mysql:1)mysql是开源的,所以你不需要支付额外的费用就能使用。2)mysql支持大型的数据库......
  • PostgreSQL数据库动态共享内存管理器——dynamic shared memory segment
    首先看dynamic_shared_memory_typeGUC参数,该参数用于指定dynamicsharedmemoryimplementation类型(DSM_IMPL_POSIX、DSM_IMPL_SYSV、DSM_IMPL_WINDOWS、DSM_IMPL_MMAP,定义......