自定义函数的使用

一、自定义函数的分类

1)标量值函数
2)表值函数(内联表格值函数,多语句表值函数)

二、自定义函数和存储过程的区别

1)自定义函数:

1. 可以返回表变量
  2. 限制颇多,包括:
    不能使用output参数;
    不能用临时表;
    函数内部的操作不能影响到外部环境;
    不能通过select返回结果集;
    不能update,delete,数据库表;
  3. 必须return 一个标量值或表变量
  自定义函数一般用在复用度高,功能简单单一,争对性强的地方。

2)存储过程

1. 不能返回表变量
  2. 限制少,可以执行对数据库表的操作,可以返回数据集
  3. 可以return一个标量值,也可以省略return
   存储过程一般用在实现复杂的功能,数据操纵方面。

三、自定义函数的使用

1)创建标量值函数

go
create function convert_sex
(
	@sex bit
)
returns varchar(4) --返回的数据类型
as
begin
	declare @rsex varchar(4)
	if @sex=1
		select @rsex='男'
	else
		select @rsex='女'
	return @rsex
end

–调用标量值函数

go
select *,dbo.convert_sex(Sex) from Customers

2)创建内联表格值函数

go
create function Customers_table
(
	@country nvarchar(50)
)
returns table
as
return (select * from Customers where Country=@country)


--调用内联表格值函数
go
select * from Customers_table('德国')

3)创建多语句表值函数

--创建多语句表值函数
go
create function Books_bookType_table
(
	@booktypeID	int
)
returns @books_booktype	table
(
	Name nvarchar(50),
	Remark nvarchar(50),
	BookTypeName nvarchar(50)
)
as
begin
	insert @books_booktype(Name,Remark,BookTypeName) 
	select b.Name,b.Remark,bt.Name from Books b join bookType bt on b.BookTypeID=bt.ID 
	where bt.ID=@booktypeID
	return
end


--调用多语句表值函数
go
select * from Books_bookType_table(1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值