日期:2014-05-17  浏览次数:20679 次

自定义一个表值函数,提示“在此上下文中不能使用带有返回值的 RETURN 语句。”

use test
go
Create function AvgResult(@scode varchar(10))--函数名与函数参数
Returns table--返回值的类型
As 
Begin
Declare @avg int --声明一个变量
select @avg = CONVERT(int,@scode) --把函数参数从varchar转换成int

Return 
(
select * from table3 where age = @avg
)
End



提示:
消息 178,级别 15,状态 1,过程 AvgResult,第 8 行
在此上下文中不能使用带有返回值的 RETURN 语句。

语句哪里有错误码?

------解决方案--------------------
--要么直接RETURN
Create function AvgResult(@scode varchar(10))--函数名与函数参数
Returns TABLE--返回值的类型
As 
Return 
(
    select * from table3 where age = CONVERT(int,@scode)
)
GO

--要么先定义table,再INSERT,最后RETURN一下
Create function AvgResult(@scode varchar(10))--函数名与函数参数
Returns @table table(age int)--返回值的类型
As 
Begin
    Declare @avg int --声明一个变量
    select @avg = CONVERT(int,@scode) --把函数参数从varchar转换成int
 
INSERT @table 
select age from table3 where age = @avg --注意这儿的字段个数和类型要和定义的相对应

RETURN 
End