关于用户自定义函数的一个小问题

ggsysy 2009-01-07 11:21:25
create function average(@stuno as char(10))
returns real
begin
declare @aver int
select @aver=(select avg(score) from choice where s_no=@stuno)
return @aver
end

我是新手,现在想问的就是,returns real中real是返回值的数据类型,在这里就是指@aver的数据类型么?一开始不是定义为int的吗,怎么就直接变real类型了呢?
...全文
46 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ggsysy 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wgzaaa 的回复:]
也就是说@aver 存在于函数内部它的int类型不会改变,
你拿到的是经过returns转交过来的值
[/Quote]
我觉的这种理解还是不错的。呵呵,谢谢大家的帮忙。
wgzaaa 2009-01-07
  • 打赏
  • 举报
回复
也就是说@aver 存在于函数内部它的int类型不会改变,
你拿到的是经过returns转交过来的值
zjcxc 元老 2009-01-07
  • 打赏
  • 举报
回复
returns 只是定义返回的类型, 函数中的 return 语句者是真正的返回值, 只要 return 语句就可以了, 至于你用 return 去返回一个变量的值, 还是直接返回一个常量值, 那个是没有关系的
wgzaaa 2009-01-07
  • 打赏
  • 举报
回复
returns real 是定义的返回类型
return @aver 后,将按定义进行转换即由int 转为real
百年树人 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 guangguang2007 的帖子:]
create function average(@stuno as char(10))
returns real
begin
declare @aver int
select @aver=(select avg(score) from choice where s_no=@stuno)
return @aver
end

我是新手,现在想问的就是,returns real中real是返回值的数据类型,在这里就是指@aver的数据类型么?一开始不是定义为int的吗,怎么就直接变real类型了呢?
[/Quote]

把结果中的int转成real作为函数的返回值
水族杰纶 2009-01-07
  • 打赏
  • 举报
回复
create function average(@stuno as char(10)) 
returns real --決定返回類型
begin
declare @aver int
select @aver=(select avg(score) from choice where s_no=@stuno)
return @aver
end

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧