当前位置:   article > 正文

【SQL】自定义函数(标量函数、表值函数)_sql 表值函数

sql 表值函数

SQL自定义函数:标量函数和表值函数

标量函数:标量函数是对单一值操作,返回单一值

表值函数:返回表类型的数据。表值函数的返回类型是一个表,因此,可以像使用表一样使用表值函数。

标量函数

  1. CREATE FUNCTION dbo.F3_GetMax(
  2. @a INT, --函数的两个参数
  3. @b INT
  4. )
  5. RETURNS INT --返回类型为INT
  6. AS
  7. BEGIN
  8. DECLARE @max INT;
  9. IF(@a>=@b)
  10. BEGIN
  11. SET @max = @a;
  12. END
  13. ELSE
  14. BEGIN
  15. SET @max = @b
  16. END
  17. RETURN @max; --最后return返回@max中的值
  18. END
  19. --调用函数
  20. SELECT dbo.F3_GetMax(2,3);

表值函数

  1. CREATE FUNCTION F3_GetEmployeeSalary(
  2. @EmployeeID VARCHAR(50) --参数
  3. )
  4. RETURNS TABLE --返回类型为表
  5. AS RETURN(
  6. SELECT * FROM dbo.TEmployee WHERE EmployeeID = @EmployeeID
  7. --通过一条sql查询语句获取表中数据
  8. )  
  9. --函数调用
  10. SELECT * FROM F3_GetEmployeeSalary('1')

题目一:用标量函数实现可以通过班级、性别查询总人数

实现代码:

  1. if exists(select * from sysobjects where name='dbo.peopleCount')
  2. drop function dbo.peopleCount
  3. go
  4. CREATE FUNCTION dbo.peopleCount(
  5. @class nvarchar(100), --函数的两个参数
  6. @sex nvarchar(100)
  7. )
  8. RETURNS INT --返回类型为INT
  9. AS
  10. BEGIN
  11. DECLARE @peopleCount INT;
  12. select @peopleCount = count(*) from student s1 where s1.Sclass=@class and s1.Ssex=@sex;
  13. RETURN @peopleCount; --最后return返回@max中的值
  14. END
  15. select dbo.peopleCount('一班','男') 总人数;

 运行结果:

题目二:用表值实现可以通过科目,查询该科目下不同性别学生的总分和平均分

实现代码:

  1. if exists(select * from sysobjects where name='GetTotalAndAvg')
  2. drop function GetTotalAndAvg
  3. go
  4. CREATE FUNCTION GetTotalAndAvg(
  5. @subject VARCHAR(50) --参数
  6. )
  7. RETURNS TABLE --返回类型为表
  8. AS RETURN(
  9. SELECT @subject 课程,s1.Ssex 性别,sum(s2.Sgrade)总分,avg(s2.Sgrade)平均分 FROM student s1 join score s2 on s1.Sno=s2.Sno WHERE s2.Ssubject = @subject group by s1.Ssex
  10. --通过一条sql查询语句获取表中数据
  11. )
  12. --函数调用
  13. SELECT * FROM dbo.GetTotalAndAvg('语文')

 运行结果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/641608
推荐阅读
相关标签
  

闽ICP备14008679号