Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建用于通知的存储过程和函数的规则_C#_Sql_Sql Server_Sqldependency - Fatal编程技术网

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

C# 创建用于通知的存储过程和函数的规则,c#,sql,sql-server,sqldependency,C#,Sql,Sql Server,Sqldependency,使用SqlDependency和SqlMonitor获得数据库更改通知时,我知道有一些规则可以构造查询 我想知道的是存储过程所需的结构是什么;就我所能理解的进行简单的SELECT查询而言,通过遵循规则,我可以使其与sql notification service一起工作 当SP中存在控制流(if、else或while)时会发生什么情况?有规则吗 同样的规则是否也适用于函数 : 当注册通知的命令包含多条语句时,数据库引擎将为批处理中的每条语句创建通知 因此,如果您有控制流(if、else、whil

使用
SqlDependency
SqlMonitor
获得数据库更改通知时,我知道有一些规则可以构造查询

我想知道的是
存储过程所需的结构是什么;就我所能理解的进行简单的
SELECT
查询而言,通过遵循规则,我可以使其与sql notification service一起工作

  • SP
    中存在控制流(
    if
    else
    while
    )时会发生什么情况?有规则吗

  • 同样的规则是否也适用于
    函数

  • :

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

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

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


    其要点是,只有SELECT才能设置通知。执行SP(或批处理)时,不会为“SP”本身设置通知,而是为正在执行的每个SELECT语句设置通知。

    因此,当这些语句对通知概念有效时,没有什么可以阻止我获取通知。从SP中的一条语句或另一条语句中得到通知对我来说没有任何区别。我没弄错吧?恐怕你会收到很多通知。如果在同一SP中有一条有效语句和一条无效语句,则会立即收到无效通知,稍后可能会在同一个
    SqlDependency
    上收到更新通知。我想我没怎么玩SPs,你最好测试一下。