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

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')

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

相关推荐