存储过程和用户​​定义函数之间的差异

vas*_*asu 45 sql database stored-procedures

任何人都可以解释存储过程和用户​​定义函数之间的确切区别,以及每个上下文有用吗?

Sin*_*ton 46

这就是我一直记在的:)

  • 过程可以返回零或n值,而函数可以返回一个必需的值.
  • 程序可以有输入/输出参数,而函数只能有输入参数.
  • Procedure允许select和DML语句,而function只允许select语句.
  • 可以从过程调用函数,而不能从函数调用过程.
  • 异常可以通过过程中的try-catch块来处理,而try-catch块不能在函数中使用.
  • 我们可以在程序中进行交易管理,但是我们不能进入功能.
  • 程序不能在select语句中使用,而函数可以嵌入select语句中.
  • UDF可以在WHERE/HAVING/SELECT部分​​中的任何位置的SQL语句中使用,而存储过程则不能.
  • 返回表的UDF可以视为另一个行集.这可以在JOIN中与其他表一起使用.
  • 内联UDF可以作为带参数的视图,可以在JOIN和其他Rowset操作中使用.

来源http://www.codeproject.com/Tips/286539/Difference-between-stored-procedure-and-function


OMG*_*ies 15

函数始终返回一个值,并且不能执行DML语句(INSERT/UPDATE/DELETE).

存储过程不能返回值 - 您需要使用OUT参数 - 并且可以运行DML语句.

使用函数与存储过程的优势?


除了上面的比较,它们是平等的.但鉴于比较,根据您需要做的事情,您可能会比使用函数更频繁地使用存储过程.

  • 您可以将函数嵌入到其他语句中,因为它们返回值.让你做一些事情,比如SELECT*FROM TableFunction(Param1,Param2)TF INNER JOIN表T ON T.Key = TF.FKey WHERE TF.Col1 = ValueFunction(Param3) (4认同)

gkp*_*tar 5

用户定义的函数几乎没有限制,比如可以使用DML语句等.请检查