数据库—用户自定义函数(基于SQL Server)

博客中用到的数据库脚本文件:https://download.csdn.net/download/sunshine543123/12087175

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

go
create function F_自定义函数(@i int)
returns int
begin
declare @resu int,@n int
set @resu=1
if(@i<0)
set @resu=0
else if(@i<2)
set @resu=1
else
begin
while(@i>1)
begin
set @resu=@resu*@i
set @i=@i-1
end
end
return @resu
end
go
select dbo.F_自定义函数(5)*dbo.F_自定义函数(3)-dbo.F_自定义函数(6)

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

go
CREATE FUNCTION F2_dept_count(@dname varchar(20))
RETURNS int
AS
BEGIN
declare @result int
select @result=COUNT(*) from Employee e,Department d
where d.DNAME=@dname and e.DNO=d.DNUMBER
return (@result)
END
go
select dbo.f2_dept_count('headquarters')

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

go
CREATE FUNCTION F3_dept_emp(@dname varchar(20))
RETURNS TABLE
AS
RETURN(
SELECT fname,lname,sex,ssn,DATEDIFF(year,bdate,GETDATE()) as age
from Employee e join Department d
on e.DNO=d.DNUMBER
WHERE dname=@dname)
go
select * from dbo.f3_dept_emp('administration')

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

go
CREATE FUNCTION F_PROJECT_EMP(@PNAME VARCHAR(30))
RETURNS @PEMP TABLE(
    FNAME varchar(30),
    SALARY INT,
    AGE INT )  
AS
BEGIN
    INSERT @PEMP
    SELECT UPPER(FNAME),SALARY,DATEDIFF(YEAR,BDATE,GETDATE()) FROM Employee E 
    JOIN WORKS_ON W ON E.SSN=W.ESSN
    JOIN Project P ON W.PNO=P.PNUMBER
   WHERE PNAME=@PNAME
     RETURN
END
go
SELECT * FROM DBO.F_PROJECT_EMP('PRODUCTY')
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值