SQL Server用户自定义函数

1.创建标量型自定义函数,建立一个求阶乘的函数“F1_自定义函数”,调用该函数计算5!*3!-6!。

SQL文本:

use Company
go

create function F_自定义函数(@number int)
returns int
as
begin
declare @m int
set @m=1
if(@number<0)
  set @m=0
else if(@number<2)
  set @m=1
else begin
while @number!=0
begin
set @m=@m*@number
set @number=@number-1
end
end
return (@m)
end
go

select dbo.F_自定义函数(5)*dbo.F_自定义函数(3)-dbo.F_自定义函数(6)

结果截图:

SQL Server用户自定义函数_第1张图片

2.COMPANY数据库中,创建一个自定义标量函数,用来返回某个部门(传入参数为“部门名称”)的员工数。

SQL文本:

use Company
go

create function F_EmpNumber(@dname varchar(20))
returns int
as

begin
declare @m int
select @m=count(*) from Employee e,DEPARTMENT d
where d.DNAME=@dname
      and e.DNO=d.DNUMBER 
return (@m)
end
go

select dbo.F_EmpNumber('Research')

结果截图:

SQL Server用户自定义函数_第2张图片

3.在COMPANY数据库中,创建一个自定义内嵌表值函数,用来返回某个部门(传入参数为“部门名称”)的所有员工的姓名、性别、SSN和年龄信息。

SQL文本:

use Company
go

create function F_EmployInfo(@dname varchar(20))
returns table
as
return (
select e.FNAME,LNAME,SEX,SSN,YEAR(GETDATE())-YEAR(e.BDATE) as AGE
from Employee e,DEPARTMENT d
where d.DNAME=@dname
      and e.DNO=d.DNUMBER
)
go

select * from dbo.F_EmployInfo('Research')

结果截图:

SQL Server用户自定义函数_第3张图片

4.在COMPANY数据库中,创建一个自定义多语句表值函数,用来返回参加过某个项目(传入参数为“项目名称”)的员工的“FNAME”、“SALARY”和年龄信息(要求将“FNAME”转换成大写字母)。

SQL文本:

use Company
go

create function F_ProEmployInfo(@pname varchar(20))
returns @某项目员工信息 table(
FNAME varchar(10),
SALARY int,
AGE int
)

as
begin
insert @某项目员工信息
select upper(e.FNAME),e.SALARY, YEAR(GETDATE())-YEAR(e.BDATE)
from Employee e,PROJECT p,DEPARTMENT d
where p.PNAME=@pname
      and d.DNUMBER=p.DNUM
      and e.DNO=d.DNUMBER
      return
end
go

select * from dbo.F_ProEmployInfo('ProductX')

结果截图:

SQL Server用户自定义函数_第4张图片

你可能感兴趣的:(SQL,Server)