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

 

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

 自定义函数:
  1.函数类型;
  2.函数的参数和返回值;
  
  1.函数类型:
   标量值函数,返回的是一个标量值
   表值函数:
    内联表值函数;
    多语句表值函数。
   
   标量值函数:

   eg1:创建一个统计某雇员订单总数的函数
    create function SumOrders(@职工号 varchar(20))--指定参数名,和返回类型
     returns int--指定返回类型
     begin
      declare @订单总数 int
      select @订单总数=count(订单.订单号) from
       订单 join 职工 on 订单.职工号=职工.职工号
       where 职工.职工号=@职工号
      return @订单总数
     end
    
     select dbo.SumOrders('E4')
   
   eg2:创建内联表值函数

    create function SelectOrdersByTime(@起始时间 datetime,@终止时间 datetime)
    returns table
    return select * from 订单 where
     订单日期 between @起始时间 and @终止时间
    select * from SelectOrdersByTime('2003-01-01','2003-07-01')
    eg3:创建多语句表值函数
create function MingDan()--无参函数
     returns @名单 table
     (
       编号 int identity(1,1) not null,
      姓名 nvarchar(10) not null
     )
      begin 
       insert @名单
        select 供应商编号,姓名 from 供应商
       insert @名单
        select 职工编号,姓名 from 职工
       return
      end
     
     select * from MingDan()
    eg4:自定义函数生成默认值:
   
  create function Default_Num()
      returns varchar(7)
      begin 
       declare @编号 varchar(7)
       declare @id int
       select top 1 @编号=编号
     from test
     order by 编号 desc
     if @@rowcount=0
      set @编号='TCP_001'
     else
      begin
       set @id=cast(substring(@编号,5,3) as int) + 1
       set @编号='TCP_' + replicate('0',3-len(@id)) + cast(@id as varchar(3))
      end
      return @编号
    end
 
select dbo.Default_Num()
create table test
(
id int identity(1,1) not null primary key,
编号 varchar(7) default dbo.Default_Num(),
名称 varchar(3)
)
insert test(名称) values('001')

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值