SQL SERVER中的自定义函数

标量函数:
返回的结果只是一个标量,就是一种类型的一个值

1.创建函数:

CREATE FUNCTION Sum(
 @num1 INT,   --定义输入参数
 @num2 INT
)
RETURNS INT --定义返回值类型
AS
BEGIN     --函数体
DECLARE @sum INT;
SELECT @sum=@num1+@num2;
RETURN @sum; --返回函数值
END
GO

2.调用标量函数:dbo.函数名

DECLARE @result INT; --用来接收函数返回值
SELECT @result=dbo.Sum(10,20);
PRINT 'Sum:'+CAST(@result AS VARCHAR)

内联表值函数:
返回的是一个表数据,表数据就是TABLE类型
–会将查询结果集存储在内存空间里面的一张虚拟表中

CREATE FUNCTION QueryUsers(
 @qq INT
)
RETURNS TABLE --返回类型:TABLE
AS
RETURN(SELECT * FROM Users WHERE qq>@qq) -- 添加SELECT查询语句,只执行一条SQL语句后返回Table结果
GO

调用函数:
dbo.QueryUsers(10030)会返回数据集,作为数据源,需要搭配SELECT语句才可以

SELECT qq,nickname,createtime FROM dbo.QueryUsers(10030);

多语句表值函数:
多语句表值函数跟内联表值函数都是表值函数
–它们返回的结果都是Table类型,多语句表值函数顾名思义:
–就是可以通过多条语句来创建Table类型的数据,这里不同于内联表值函数
–内联表值函数的返回结果是由函数体内的SELECT语句来决定,而多语句表值函数
–则是需要指定具体的Table类型的结构,也就是说返回的Table,
–已经定义好要哪些字段返回,所以它能够支持多条语句的执行来创建Table数据

CREATE FUNCTION QueryUsersMoreStatements(
 @qq INT
)
RETURNS 
@Result TABLE(
 qq INT,
 nickname VARCHAR(36)
)
AS
BEGIN
 DECLARE @qqNum INT,@QQNickName VARCHAR(36)
 INSERT INTO @result(qq,nickname)    
 SELECT qq,nickname FROM Users WHERE qq>@qq
 RETURN
END
GO

--INSERT INTO SELECT 语句:将一个表(A)的数据复制到另一个表(B),保证A表查询出来的列数和B表相同,会返回一数据集,可作为数据源

调用表值函数:

SELECT * FROM QueryUsersMoreStatements(10030);
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值