创建自定义函数

例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(‘数学’)
运行结果为:

这里写图片描述

猜你喜欢

转载自blog.csdn.net/sinat_37676560/article/details/80865355