【问题标题】:Difference between stored procedure and function in SQL Server? [duplicate]SQL Server 中存储过程和函数的区别? [复制]
【发布时间】:2016-02-25 11:43:53
【问题描述】:

我知道存储过程和函数之间的主要区别,但一个区别是可以从存储过程中调用函数,但不能从函数中调用存储过程。

我的问题是为什么我们不能从函数中调用存储过程?

【问题讨论】:

标签: sql sql-server


【解决方案1】:

存储过程可以更改数据,因此函数调用存储过程的结果可能是不确定的。例如,如果您编写了一个存储过程,如果用户有一段时间没有登录,则将其设置为不活动,并且您编写了一个计算不活动用户的函数,但在此之前调用了该存储过程,那么该函数的预期结果将是在执行时更改。

我也不同意这种方法,但这就是它的工作原理。请注意,过程可以有 out 参数,这意味着您可以将它们用作函数。所以,如果你想从 f1 调用 p1,那么将 f1 修改为一个没有参数的存储过程。

【讨论】:

    【解决方案2】:

    函数不能对数据库进行任何更改,但可以读取它们。

    存储过程可以对数据库做任何事情。

    您不能从函数执行存储过程。但是你可以在存储过程中执行一个函数。

    您可以从函数执行扩展存储过程。(虽然这不是一个好习惯)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      • 2015-10-20
      • 2010-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多