优点:
可以在SQL语句中调用,直接使用返回值,从而可以形成复杂的SQL应用。
缺点:
能在函数中使用的语句有严格限制:
- 不支持create、ALTER、drop等DDL(Data Definition Language)命令;
- insert、delete、update只能用在临时表上;
- 不支持动态SQL;
- 不支持“不确定”的函数,比如常用的getdate。不确定函数是指输入参数相同,返回结果可能不同的函数。
变通办法:
要解决用户函数的种种限制,可以巧妙运用用户函数调用存储过程。比如,需要在函数中用getdate,就写个存储过程返回getdate的结果。然后从函数里去调用这个存储过程。需要在函数中使用update等,也可类推。