真怪,定义函数,返回一个表变量时,为何不能用begin end呢?请看代码:
ALTER FUNCTION tmp2 ()
RETURNS TABLE
AS
--begin
RETURN (SELECT * FROM gzda)
--end
以上是一个最简单的函数,返回一个表变量,可是如果加上begin 和end就会报错。去了这两句就一切正常。这是为什么,难道如果返回的是表变量,就不能加上begin 和 end吗?真是不解。
[解决办法]
SQL Server 2000 支持三种用户定义函数:
标量函数
内嵌表值函数 --你用的是这种,不能带begin end
多语句表值函数
表值函数返回 table。
对于内嵌表值函数,没有函数主体;表是单个 SELECT 语句的结果集。
对于多语句表值函数,在 BEGIN...END 块中定义的函数主体包含 TRANSACT-SQL 语句,这些语句可生成行并将行插入将返回的表中。