SQL SERVER 高级编程 - 自定义函数 拾忆

本文介绍了SQL中的三种自定义函数类型:标量值函数、内嵌表值型函数及多语句表值型函数,并提供了详细的创建及使用案例。

每个人都很忙,但是花10分钟复习下,总结下基础东西还是很有益处的。

背景:

  总结一句,使用简便,还能递归,是的SQL更简洁,相对比一大堆的关联语句,而且关联一大堆还不一定实现特定功能。而且共用部分可以提取出来,提高复用性,这是有代码洁癖的人没法接受的,所以总会重构代码,。。扯偏了

创建:

(图片来自百度)

自定义函数分为以下几种:

1.标量值函数:

        案例脚本:

    

CREATE FUNCTION Func_CreateGroup(@Id int)
RETURNS  varchar(4)
AS
BEGIN
	RETURN 
	CASE 
		WHEN @Id<=5 THEN '小'
		WHEN 10000<=@Id AND @Id>5 THEN '中'
		END
END

  使用:

SELECT dbo.Func_CreateGroup(Id),MemberName FROM dbo.MemberInfo

  这里有一个注意点:标量函数前面的dbo必须加上,否则提示错误:'Func_CreateGroup' 不是可以识别的 内置函数名称。

查询结果:

2.内嵌表值型函数:

语法:

参考脚本:

CREATE FUNCTION Func_Table(@Id int)
RETURNS table
AS
	RETURN SELECT * FROM dbo.MemberInfo WHERE Id>@Id
GO

  使用参考:

SELECT * FROM Func_Table(500)

  这里要注意一个细节,在标量值函数中,有一个前缀dbo.必须加上,而内嵌表值型 函数可以不用加上(加上也没错),这是一个区别,另外上面忘记说了,注意第二行的单词拼写,是returns 不要写成return了,然后下面的脚本就像写存储过程一样,直接在as下面写具体的业务实现。

3.多语句表值型函数

多语句表值型函数是标量函数和单语句函数的结合体,该函数返回的是一个表,可以进行多次查询。

参考语法:

参考脚本:

CREATE FUNCTION Func_MuilSqlTable(@Id int)
RETURNS @table TABLE
(
	Id int ,
	MemberName varchar(20),
	UpdateTime datetime
) AS
BEGIN
	INSERT @table
	SELECT Id,MemberName,UpdateTime FROM dbo.MemberInfo
	WHERE id=@Id
	RETURN 
END

使用参考:

SELECT * FROM dbo.Func_MuilSqlTable(1)

案例执行结果:

这里有个细节要注意,写法和上面的内嵌表值型函数相似,但是在returns处,多了一个表变量 @table table以及要返回的字段(使用小括号括起来),然后是AS的内容,但是在最后要注意一下,有一个  return(蓝色部分),否则报错 函数中最后一条语句必须是返回语句,其次就是,dbo.的前缀。

 

转载于:https://www.cnblogs.com/Tmc-Blog/p/5315200.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值