自定义函数中返回表的例子

USE [作业数据库]
GO

SET QUOTED_IDENTIFIER ON
GO
 ALTER function [dbo].[FK_baogaof1](@time datetime)  --  drop function FK_baogaof1
 returns @mytable TABLE(委托报告量 varchar(100),CECR1 int,CECR11 int,CECR3 int,CECR16 int,CECR6 int,CECR7 int,OTHERS int,总量 int)
 as
 begin

 declare @CECR1Num int
 declare @CECR11Num int
 declare @CECR3Num int
 declare @CECR16 int
 declare @CECR6 int
 declare @CECR7 int
 declare @OtherNum int
 declare @total int
 declare @time1 datetime
 set @time1=null
 
 
 --------------如果是星期一,查询:逾期量 今天 星期二三四五 和下星期一。
 if datename(weekday, @time)= '星期一'
 begin
 -----------------------逾期量--------------------------------------------------------------------------------------------
  select @CECR1Num=dbo.FK_baogaof2(@time,'CECR1',1)
  select @CECR11Num =dbo.FK_baogaof2(@time,'CECR1-1',1)
  select @CECR3Num =dbo.FK_baogaof2(@time,'CECR3',1)
  select @CECR16 =dbo.FK_baogaof2(@time,'CECR16',1)
  select @CECR6 =dbo.FK_baogaof2(@time,'CECR6',1)
  select @CECR7 =dbo.FK_baogaof2(@time,'CECR7',1)
  select @OtherNum =dbo.FK_baogaof2(@time,'其他',1)
  set @total=@CECR1Num+@CECR11Num+@CECR3Num+@CECR16+@CECR6+@CECR7+@OtherNum
  insert  @mytable select '逾期量',@CECR1Num,@CECR11Num,@CECR3Num,@CECR16,@CECR6,@CECR7,@OtherNum,@total

  --今天
  select @CECR1Num=dbo.FK_baogaof2(@time,'CECR1',0)
  select @CECR11Num =dbo.FK_baogaof2(@time,'CECR1-1',0)
  select @CECR3Num =dbo.FK_baogaof2(@time,'CECR3',0)
  select @CECR16 =dbo.FK_baogaof2(@time,'CECR16',0)
  select @CECR6 =dbo.FK_baogaof2(@time,'CECR6',0)
  select @CECR7 =dbo.FK_baogaof2(@time,'CECR7',0)
  select @OtherNum =dbo.FK_baogaof2(@time,'其他',0)
  set @total=@CECR1Num+@CECR11Num+@CECR3Num+@CECR16+@CECR6+@CECR7+@OtherNum
 insert  @mytable select CONVERT(varchar(100), @time, 23),@CECR1Num,@CECR11Num,@CECR3Num,@CECR16,@CECR6,@CECR7,@OtherNum,@total
 
  set @time1=dateadd(day, 1, @time) --星期二
  select @CECR1Num=dbo.FK_baogaof2(@time1,'CECR1',0)
  select @CECR11Num =dbo.FK_baogaof2(@time1,'CECR1-1',0)
  select @CECR3Num =dbo.FK_baogaof2(@time1,'CECR3',0)
  select @CECR16 =dbo.FK_baogaof2(@time1,'CECR16',0)
  select @CECR6 =dbo.FK_baogaof2(@time1,'CECR6',0)
  select @CECR7 =dbo.FK_baogaof2(@time1,'CECR7',0)
  select @OtherNum =dbo.FK_baogaof2(@time1,'其他',0)
  set @total=@CECR1Num+@CECR11Num+@CECR3Num+@CECR16+@CECR6+@CECR7+@OtherNum
 insert  @mytable select CONVERT(varchar(100), @time1, 23),@CECR1Num,@CECR11Num,@CECR3Num,@CECR16,@CECR6,@CECR7,@OtherNum,@total
 
  set @time1=dateadd(day, 2, @time) --星期三
  select @CECR1Num=dbo.FK_baogaof2(@time1,'CECR1',0)
  select @CECR11Num =dbo.FK_baogaof2(@time1,'CECR1-1',0)
  select @CECR3Num =dbo.FK_baogaof2(@time1,'CECR3',0)
  select @CECR16 =dbo.FK_baogaof2(@time1,'CECR16',0)
  select @CECR6 =dbo.FK_baogaof2(@time1,'CECR6',0)
  select @CECR7 =dbo.FK_baogaof2(@time1,'CECR7',0)
  select @OtherNum =dbo.FK_baogaof2(@time1,'其他',0)
  set @total=@CECR1Num+@CECR11Num+@CECR3Num+@CECR16+@CECR6+@CECR7+@OtherNum
 insert  @mytable select CONVERT(varchar(100), @time1, 23),@CECR1Num,@CECR11Num,@CECR3Num,@CECR16,@CECR6,@CECR7,@OtherNum,@total
 
  set @time1=dateadd(day, 3, @time) --星期四
  select @CECR1Num=dbo.FK_baogaof2(@time1,'CECR1',0)
  select @CECR11Num =dbo.FK_baogaof2(@time1,'CECR1-1',0)
  select @CECR3Num =dbo.FK_baogaof2(@time1,'CECR3',0)
  select @CECR16 =dbo.FK_baogaof2(@time1,'CECR16',0)
  select @CECR6 =dbo.FK_baogaof2(@time1,'CECR6',0)
  select @CECR7 =dbo.FK_baogaof2(@time1,'CECR7',0)
  select @OtherNum =dbo.FK_baogaof2(@time1,'其他',0)
  set @total=@CECR1Num+@CECR11Num+@CECR3Num+@CECR16+@CECR6+@CECR7+@OtherNum
 insert  @mytable select CONVERT(varchar(100), @time1, 23),@CECR1Num,@CECR11Num,@CECR3Num,@CECR16,@CECR6,@CECR7,@OtherNum,@total
 
  set @time1=dateadd(day, 4, @time) --星期五
  select @CECR1Num=dbo.FK_baogaof2(@time1,'CECR1',0)
  select @CECR11Num =dbo.FK_baogaof2(@time1,'CECR1-1',0)
  select @CECR3Num =dbo.FK_baogaof2(@time1,'CECR3',0)
  select @CECR16 =dbo.FK_baogaof2(@time1,'CECR16',0)
  select @CECR6 =dbo.FK_baogaof2(@time1,'CECR6',0)
  select @CECR7 =dbo.FK_baogaof2(@time1,'CECR7',0)
  select @OtherNum =dbo.FK_baogaof2(@time1,'其他',0)
  set @total=@CECR1Num+@CECR11Num+@CECR3Num+@CECR16+@CECR6+@CECR7+@OtherNum
 insert  @mytable select CONVERT(varchar(100), @time1, 23),@CECR1Num,@CECR11Num,@CECR3Num,@CECR16,@CECR6,@CECR7,@OtherNum,@total
 
  set @time1=dateadd(day, 7, @time) --下周一
  select @CECR1Num=dbo.FK_baogaof2(@time1,'CECR1',0)
  select @CECR11Num =dbo.FK_baogaof2(@time1,'CECR1-1',0)
  select @CECR3Num =dbo.FK_baogaof2(@time1,'CECR3',0)
  select @CECR16 =dbo.FK_baogaof2(@time1,'CECR16',0)
  select @CECR6 =dbo.FK_baogaof2(@time1,'CECR6',0)
  select @CECR7 =dbo.FK_baogaof2(@time1,'CECR7',0)
  select @OtherNum =dbo.FK_baogaof2(@time1,'其他',0)
  set @total=@CECR1Num+@CECR11Num+@CECR3Num+@CECR16+@CECR6+@CECR7+@OtherNum
 insert  @mytable select CONVERT(varchar(100), @time1, 23),@CECR1Num,@CECR11Num,@CECR3Num,@CECR16,@CECR6,@CECR7,@OtherNum,@total
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SQL Server 自定义函数是用 T-SQL 编写的存储过程,可以在 T-SQL 语句调用,并返回一个值。它的语法如下: ``` CREATE FUNCTION function_name ( @parameter1 datatype, @parameter2 datatype, ... ) RETURNS return_datatype AS BEGIN -- function body DECLARE @local_variable datatype -- logic to perform the task RETURN return_value END ``` 下面是一个简单的例子,它创建了一个名为 "GetSum" 的自定义函数,接收两个整数并返回它们的和: ``` CREATE FUNCTION GetSum (@num1 INT, @num2 INT) RETURNS INT AS BEGIN RETURN (@num1 + @num2) END ``` 然后,您可以在 T-SQL 语句调用该函数,如下所示: ``` SELECT dbo.GetSum(10, 20) ``` 输出结果将是 30。 ### 回答2: 在SQL Server,可以使用以下的语法创建自定义函数: CREATE FUNCTION 函数名(@参数1 数据类型, @参数2 数据类型, ...) RETURNS 返回值的数据类型 BEGIN -- 函数体 -- 可以包含任意的SQL语句和逻辑 -- 最后使用RETURN语句返回结果 RETURN 结果值 END 下面举一个例子来说明自定义函数的写法: 我们创建一个自定义函数,用于计算员工的年薪总额。假设有一个名为Employees的,包含了员工的信息,其有一个字段是Salary,示员工的月薪。 首先,需要创建一个函数,计算每位员工的年薪: CREATE FUNCTION CalculateAnnualSalary(@salary DECIMAL(10,2)) RETURNS DECIMAL(10,2) BEGIN DECLARE @annualSalary DECIMAL(10,2) SET @annualSalary = @salary * 12 RETURN @annualSalary END 接下来,我们可以在查询使用这个自定义函数,来计算所有员工的年薪总额: SELECT SUM(dbo.CalculateAnnualSalary(Salary)) AS TotalAnnualSalary FROM Employees 在上述的例子,我们创建了一个名为CalculateAnnualSalary的函数,该函数接受一个参数@salary,返回值为DECIMAL(10,2)类型。在函数体,我们用参数的值乘以12来计算年薪,并将结果保存在一个变量@annualSalary。最后使用RETURN语句返回结果。 在查询,我们通过调用这个自定义函数来计算所有员工的年薪总额,并将结果赋给一个名为TotalAnnualSalary的别名。 ### 回答3: 在SQL Server,我们可以通过CREATE FUNCTION语句来创建自定义函数。函数可以用于执行一系列操作,并返回一个值。 下面是一个例子来说明自定义函数的写法: ```sql -- 创建一个函数,计算两个数的和 CREATE FUNCTION dbo.GetSum ( @num1 INT, @num2 INT ) RETURNS INT AS BEGIN DECLARE @sum INT -- 执行计算 SET @sum = @num1 + @num2 -- 返回结果 RETURN @sum END ``` 在上面的例子,我们定义了一个名为dbo.GetSum的函数。函数接受两个整数参数@num1和@num2,并返回一个整数。在函数体,我们声明了一个@sum变量,用于存储计算结果。然后,我们使用SET语句将@sum变量设置为@num1和@num2的和。最后,使用RETURN语句返回计算结果。 要调用自定义函数,可以使用SELECT语句: ```sql -- 调用自定义函数,并输出结果 SELECT dbo.GetSum(10, 5) AS Sum ``` 在上述代码,我们使用SELECT语句调用GetSum函数,并传递了两个整数参数10和5。结果将作为Sum列输出。 以上是一个简单的例子来说明SQL Server自定义函数的写法。实际应用,可以根据需求编写更加复杂的函数来实现各种功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值