SQL Server中表值函数与标量值函数的比较

本文将讨论一下SQL Server中表值函数与标量值函数的区别,说到函数,首先和存储过程作个比较吧,两者有一个共同点都是预编译优化后存储在磁盘中,所以效率要比T-SQL高一点点。值得注意的是,存储过程可以创建或访问临时表,而函数不可以;同时函数不可以修改表中的数据,或调用产生副作用的函数,比如rand,newid,getdate(当然这并不是绝对的);但是函数可以作为select 或from或where子句的一部分,而存储过程不可以。接下来切入正题。

表值函数:返回一张表,比如returns table as ... return select ....

标量值函数:返回当个数据类型的值(除BLOB、游标、时间戳),比如returns int as ... return @var;

注意一点:调用函数的时候必须加上schema,而存储过程不需要。

你可能感兴趣的:(sql,sql,server,schema)