【问题标题】:Rules of creating Stored Procedures and Functions for notification通知创建存储过程和函数的规则
【发布时间】:2014-04-16 05:33:48
【问题描述】:

在使用SqlDependencySqlMonitor 获取数据库更改通知时,我知道有certain 规则来构造查询。

我很好奇的是Stored Procedure的所需结构是什么;据我所知,为了进行简单的SELECT 查询,通过遵循规则,我可以使其与 sql 通知服务一起使用。

  1. SP 中有控制流(if's、else's 或 while's)时会发生什么?有没有规定?

  2. Function 的规则是否也适用?

【问题讨论】:

    标签: c# sql sql-server sqldependency


    【解决方案1】:

    Creating a Query for Notification:

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

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

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

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

    【讨论】:

    • 所以当声明对通知概念有效时,没有什么可以阻止我收到通知。从 SP 中的一个声明或另一个声明中获得通知对我来说没有任何区别。我说对了吗?
    • AFAIK 你可能会收到 许多 个通知。如果您在同一 SP 中有一个有效的声明和一个无效的声明,您将立即收到无效通知,稍后您可能会在 same SqlDependency 上收到更新通知。我估计我玩的 SP 不多,你最好测试一下。
    猜你喜欢
    • 2012-08-08
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2016-11-07
    • 2011-03-02
    • 1970-01-01
    相关资源
    最近更新 更多