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

来源:互联网 发布:淘宝买家黑名单网站 编辑:程序博客网 时间:2024/06/04 19:41
 

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