SQL语句–简单的函数书写举例(3)
在前两篇中,案例只涉及到简单的数值,这样的函数称为【标量函数】
这里的函数,可以简单的理解为它是一个可以进行计算的工具
标量函数:是简单的数值,eg:int、char、decimal;它不能返回文本、图片等
表值函数:返回的是1个表
这次案例我们例举一个简单的【表值函数】
我想达到的目的是:
输入“1个员工的ID”,能返回(输出)“该员工的DepartmentName”和“该员工的Name”
【1.创建函数】
------------------------------------创建函数 dbo.Employee_Department-------------------
eg:
CREATE FUNCTION dbo.Employee_Department(@EmployeeID int)
---CREATE FUNCTION 函数名(@参数 数据类型)
RETURNS TABLE
---这行为固定格式
AS
RETURN
---当该函数是【表值函数】的时候,这个return后面不用写别的东西
SELECT t1.DepartmentName AS '所住公寓',t2.Name AS '员工'
---查 DepartmentName列 命名为 所住公寓 ;Name列 命名为 员工
FROM dbo.Department t1 INNER JOIN dbo.Employee t2 ON t2.DepartmentID = t1.DepartmentID
WHERE t2.EmployeeID=@EmployeeID
---将 具体的 参数值@EmployeeID 赋值给 t2.EmployeeID ,根据这个值,在关联的两张表里,查对应 DepartmentName和 Name的信息
【2.查询函数】
------------------------------------查询函数 dbo.Employee_Department-------------------
SELECT * FROM dbo.Employee_Department(1003)
---查询员工编号为1003的员工的 DepartmentName和 Name信息
返回结果
此时发现 DepartmentName 列命名不符合实际,需要对函数进行修改
【3.修改函数】
------------------------------------修改函数 dbo.Employee_Department-------------------
ALTER FUNCTION dbo.Employee_Department(@EmployeeID int)
RETURNS TABLE
AS
RETURN
SELECT t1.DepartmentName AS '系别',t2.Name AS '员工'
---将'所住公寓' 改为 '系别'
FROM dbo.Department t1 INNER JOIN dbo.Employee t2 ON t2.DepartmentID = t1.DepartmentID
WHERE t2.EmployeeID=@EmployeeID
再次执行查询语句,返回结果如下图:
【4.删除函数】
当我们想删除该函数时,执行下面的语句即可:
------------------------------------删除函数 dbo.Employee_Department-------------------
DROP FUNCTION dbo.Employee_Department