创建用于通知的存储过程和函数的规则

本文关键字:函数 规则 存储过程 通知 创建 用于 | 更新日期: 2023-09-27 17:58:43

当使用SqlDependencySqlMonitor来获得数据库更改的通知时,我知道构建查询有某些规则。

我所好奇的是Stored Procedure的必需结构是什么;就我所能理解的,制作一个简单的SELECT查询,通过遵循规则,我可以使它与sql通知服务一起工作。

  1. SP中有控制流(ifelsewhile)时会发生什么?有什么规则集吗?

  2. 同样的规则也适用于Function吗?

创建用于通知的存储过程和函数的规则

创建通知查询:

当注册通知的命令包含多个语句时,数据库引擎会为批处理中的每个语句创建一个通知。

因此,如果您有控制流(if、else、while等),那么实际执行的路径就是设置通知的路径。如果没有执行分支,则不会设置通知,因为在该分支中不会执行任何语句。如果循环重复执行一条语句,则会为每次执行设置一个单独的通知。

至于UDF,唯一重要的是那些基本上内联在语句中的UDF,因为几乎任何其他UDF都会使查询对通知无效。这些内联UDF的作用就像您在语句中编写了扩展函数定义一样。换句话说,相对于通知,他们不会改变任何事情。语句是否重要。

它的要点是只有SELECT可以设置通知。执行SP(或批处理)时,不会为"SP"本身设置通知,而是为正在执行的每个SELECT语句设置通知。