例1、创建自定义函数jc()用来计算任意数的阶乘 (带参数)
create function jc(@n as int)
returns bigint
begin
declare @i int,@s bigint
set @i=1
set @s=1
while @i<=@n
begin
set @s=@s*@i
set @i=@i+1
end
return @s
End
用SELECT语句调用jc()函数
select dbo.jc(5)
运行结果为:
例2、给定学生的学号,返回学生姓名
create function getsname(@sno char(10))
returns varchar(20)
as
begin
declare @sname varchar(20)
select @sname=sname from student where sno=@sno
return @sname
end
调用getSname()函数,查找学号为“2016001003”学生的姓名:
select dbo.getsname ('2016001003') as student_name
运行结果为:
例3、创建函数,根据给定学号和课程号,查收选课信息
create function getscore(@sno char(10), @cno char(5))
returns table
as
return (
select sname as 姓名, cname as 课程, grade as 成绩
from student, course, score
where student.sno= score.sno and
course.cno= score.cno and
student.sno=@sno and
course.cno=@cno
)
select 姓名,课程,成绩 from getscore(‘2016001003’, ‘107’)
运行结果为:
例4、创建自定义函数tj()用来计算任意一门课的平均分
create function tj(@kcm as char(20))
returns decimal(5,1)
begin
declare @pjf decimal(5,1)
select @pjf=avg(degree)
from score
where cno=
(select cno
from course
where cname=@kcm)
return @pjf
end
select dbo.tj(‘数学’)
运行结果为: