SQL Server存储过程和用户定义函数优缺点对比
2007/3/30 05:39一直在用SQL Server 2000,但很多问题都没深究。该总结一下了。
存储过程和用户定义函数都是“SQL语句组成的子程序,用以封装代码以便重复使用”。但区别也是显而易见的。简单说,存储过程功能强大,但调用不便,用户函数正相反。
用户定义函数的优点:
可以在SQL语句中调用,直接使用返值,从而形成复杂的SQL应用。
存储过程则只能用execute命令调用,用输出参数的到返回的结果。
用户定义函数的缺点:
能在函数中使用的语句有严格限制:
- 不支持create、drop等DDL命令
- insert、delete、update只能用在临时表上
- 不支持动态SQL
- 不支持“不确定”的函数,比如常用的getdate。不确定函数是指输入参数相同,返回结果可能不同的函数。全部不确定函数如下表
@@CONNECTIONS @@TOTAL_ERRORS
变通办法:
要解决用户函数的种种限制,可以巧妙运用用户函数调用存储过程。
比如,需要在函数中用getdate,就写个存储过程返回getdate的结果。然后从函数里去调用这个存储过程。需要在函数中使用update等,也可类推。
转载请注明来自:jijian91与小z - 编程
永久链接:https://jijian91.com/blog20070330/sql-server-procedure-vs-function.html