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 @[email protected]*@number
set @[email protected]
end
end
return (@m)
end
go
select dbo.F_自定义函数(5)*dbo.F_自定义函数(3)-dbo.F_自定义函数(6)
结果截图:
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 [email protected]
and e.DNO=d.DNUMBER
return (@m)
end
go
select dbo.F_EmpNumber('Research')
结果截图:
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 [email protected]
and e.DNO=d.DNUMBER
)
go
select * from dbo.F_EmployInfo('Research')
结果截图:
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 [email protected]
and d.DNUMBER=p.DNUM
and e.DNO=d.DNUMBER
return
end
go
select * from dbo.F_ProEmployInfo('ProductX')
结果截图: