SQL中自定义的函数分为标量函数和表值函数。
标量函数 :返回值是一个值;
表值函数 :返回值是一张表 。
标量函数:
create function testa(@id int) --定义函数名(随意)、参数、参数类型(可以有很多个参数,用‘,’分隔)
returns varchar(10) -- 定义返回结果的类型
as
begin
declare @value varchar(10)
select @value = name from user where uid = @id
return @value
end
--调用函数
select dbo.testa(1)
表值函数之内嵌函数:
--返回所有学生的信息 注意此处不需begin-end包裹
create function testb() --定义函数名(随意)、参数、参数类型(可以有很多个参数,用‘,’分隔)
returns table -- 定义返回结果类型为一张表
as
return (select * from student)
--调用函数
select * from dbo.testb()
表值函数-多语句函数:
create function testc(@sname varchar(10))
returns @tempa table(
id int,
namess varchar(10),
mathsc int,
chinesesc int
) --自定义表中的字段
as
begin
insert into @tempa
select s.sid,s.name,sc.math_score,sc.chinese_score from student s
left join score sc on sid = csno where name = @sname
return
end
--调用函数
select * from dbo.testc('孙')