码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2016-06-27 19:27:16      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:

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

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

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

标量值函数:

 1 go
 2  create function SumOrders(@职工号 varchar(20))--指定参数名,和返回类型  stuNo
 3   returns int --指定返回类型  
 4   begin  
 5    declare @订单总数 int  --学生人数sumstudent
 6    select @订单总数=count(订单.订单号) from  
 7     订单 join 职工 on 订单.职工号=职工.职工号  
 8     where 职工.职工号=@职工号  
 9    return @订单总数  
10   end  
11    
12   select dbo.SumOrders(E4) 
13    
14  go 
15   alter function SumStudent(@stuNo int)--指定参数名,和返回类型  stuNo
16   returns int --指定返回类型  
17   begin  
18    declare @sumS int  --学生人数sumstudent
19    select @sumS=count(*) from stuInfo   
20     where stuNo>=@stuNo  
21    return @sumS  
22   end  
23  go
24   select dbo.SumStudent(4) as 总数

--eg2:创建内联表值函数

 1 create function SelectOrdersByTime(@起始时间 datetime,@终止时间 datetime)  
 2 returns table  
 3 return select * from 订单 where  
 4  订单日期 between @起始时间 and @终止时间  
 5  
 6  go
 7 select * from SelectOrdersByTime(2003-01-01,2003-07-01)  
 8 --=======================
 9 go
10 create function SelectinfoByTime(@起始时间 int,@终止时间 int)  
11 returns table  
12 return select * from stuInfo where  
13  stuNo between @起始时间 and @终止时间  
14  
15  go
16 select * from SelectinfoByTime(1,9)  

--eg3:创建多语句表值函数

 1 create function MingDan()--无参函数  
 2      returns @名单 table  
 3      (  
 4        编号 int identity(1,1) not null,  
 5       姓名 nvarchar(10) not null  
 6      )  
 7       begin   
 8        insert @名单  
 9         select 供应商编号,姓名 from 供应商  
10        insert @名单  
11         select 职工编号,姓名 from 职工  
12        return  
13       end  
14     go   
15      select * from MingDan()  
16      
17  --eg4:自定义函数生成默认值:
18  go
19  create function Default_Num()
20     returns varchar(7)
21     begin
22         declare @编号 varchar(7)
23         declare @id int
24         select top 1 @编号=编号 from testorder by 编号 desc
25         if @@rowcount=0
26             set @编号=TCP_001
27         else
28         begin
29             set @id=cast(substring(@编号,5,3)asint) + 1
30             set @编号=TCP_ + replicate(0,3-len(@id)) +cast(@idasvarchar(3))
31         end
32         return @编号
33     end
 --eg4:自定义函数生成默认值:
 1  create function Default_Num()
 2     returns varchar(7)
 3     begin
 4         declare @编号 varchar(7)
 5         declare @id int
 6         select top 1 @编号=编号 from testorder by 编号 desc
 7         if @@rowcount=0
 8             set @编号=TCP_001
 9         else
10         begin
11             set @id=cast(substring(@编号,5,3)asint) + 1
12             set @编号=TCP_ + replicate(0,3-len(@id)) +cast(@idasvarchar(3))
13         end
14         return @编号
15     end

 

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

标签:

原文地址:http://www.cnblogs.com/linjulin/p/5620896.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!