微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Sqlserver中存储过程,触发器,自定义函数:(二

sqlserver中存储过程,触发器,自定义函数

自定义函数
1.函数类型;
2.函数的参数和返回值;

1.函数类型:
标量值函数,返回的是一个标量值
表值函数
内联表值函数
多语句表值函数

标量值函数

  1. eg1:创建一个统计某雇员订单总数的函数
  2. create function SumOrders(@职工号varchar(20))--指定参数名,和返回类型
  3. returns int--指定返回类型
  4. begin
  5. declare @订单总数 int
  6. select @订单总数=count(订单.订单号)from
  7. 订单 join 职工 on 订单.职工号=职工.职工号
  8. where 职工.职工号=@职工号
  9. return @订单总数
  10. end
  11. select dbo.SumOrders('E4')

eg2:创建内联表值函数

  1. create function SelectOrdersByTime(@起始时间 datetime,@终止时间 datetime)
  2. returns table
  3. return select *from 订单where
  4. 订单日期 between @起始时间 and @终止时间
  5. select * from SelectOrdersByTime('2003-01-01','2003-07-01')
eg3:创建多语句表值函数
  1. create function MingDan()--无参函数
  2. returns @名单 table
  3. (
  4. 编号 int identity(1,1) notnull,
  5. 姓名 nvarchar(10) not null
  6. )
  7. begin
  8. insert @名单
  9. select 供应商编号,姓名 from 供应商
  10. insert @名单
  11. select 职工编号,姓名 from 职工
  12. return
  13. end
  14. select * from MingDan()
eg4:自定义函数生成认值:
  1. create function Default_Num()
  2. returns varchar(7)
  3. begin
  4. declare @编号 varchar(7)
  5. declare @id int
  6. select top 1 @编号=编号
  7. from test
  8. order by 编号desc
  9. if @@rowcount=0
  10. set @编号='TCP_001'
  11. else
  12. begin
  13. set @id=cast(substring(@编号,5,3)asint) + 1
  14. set @编号='TCP_' + replicate('0',3-len(@id)) +cast(@idasvarchar(3))
  15. end
  16. return @编号
  17. end
  18. select dbo.Default_Num()
  19. create table test
  20. (
  21. id int identity(1,1) notnullprimarykey,
  22. 编号 varchar(7) default dbo.Default_Num(),
  23. 名称 varchar(3)
  24. )
  25. insert test(名称) values('001')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐