自定义函数与存储过程的区别(存在的意义):
1. 能够在select等SQL语句中直接使用自定义函数,存储过程不行。
2. 自定义函数可以调用其他函数,也可以调用自己(递归)
3. 可以在表列和 CHECK 约束中使用自定义函数来实现特殊列或约束
4. 自定义函数不能有任何副作用。函数副作用是指对具有函数外作用域(例如数据库表的修改)的资源状态的任何永久性更改。函数中的语句唯一能做的更改是对函数上的局部对象(如局部游标或局部变量)的更改。不能在函数中执行的操作包括:对数据库表的修改,对不在函数上的局部游标进行操作,发送电子邮件,尝试修改 目录,以及生成返回至用户的结果集。存储过程没有此限制
5. 函数只能返回一个变量。而存储过程可以返回多个
用户自定义函数的类型:
标量函数:返回一个标量值
表格值函数{内联表格值函数、多表格值函数}:返回行集(即返回多个值)
1、标量函数
Create function 函数名(参数)
Returns 返回值数据类型
[with {Encryption | Schemabinding }]
[as]