Sqlserver中存储过程,触发器,自定义函数:
自定义函数: 1.函数类型; 2.函数的参数和返回值;
1.函数类型: 标量值函数,返回的是一个标量值 表值函数: 内联表值函数; 多语句表值函数。
标量值函数:
[sql]
view plain
copy
print
?
- eg1:创建一个统计某雇员订单总数的函数
- create function SumOrders(@职工号varchar(20))
- returns int
- begin
- declare @订单总数 int
- select @订单总数=count(订单.订单号)from
- 订单 join 职工 on 订单.职工号=职工.职工号
- where 职工.职工号=@职工号
- return @订单总数
- end
- select dbo.SumOrders('E4')
eg1:创建一个统计某雇员订单总数的函数
create function SumOrders(@职工号 varchar(20))--指定参数名,和返回类型
returns int--指定返回类型
begin
declare @订单总数 int
select @订单总数=count(订单.订单号) from
订单 join 职工 on 订单.职工号=职工.职工号
where 职工.职工号=@职工号
return @订单总数
end
select dbo.SumOrders('E4')
eg2:创建内联表值函数
[sql]
view plain
copy
print
?
- create function SelectOrdersByTime(@起始时间 datetime,@终止时间 datetime)
- returns table
- return select *from 订单where
- 订单日期 between @起始时间 and @终止时间
- select * from SelectOrdersByTime('2003-01-01','2003-07-01')
create function SelectOrdersByTime(@起始时间 datetime,@终止时间 datetime)
returns table
return select * from 订单 where
订单日期 between @起始时间 and @终止时间
select * from SelectOrdersByTime('2003-01-01','2003-07-01') eg3:创建多语句表值函数
[sql]
view plain
copy
print
?
- create function MingDan()
- returns @名单 table
- (
- 编号 int identity(1,1) notnull,
- 姓名 nvarchar(10) not null
- )
- begin
- insert @名单
- select 供应商编号,姓名 from 供应商
- insert @名单
- select 职工编号,姓名 from 职工
- return
- end
- select * from MingDan()
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:自定义函数生成默认值:
[sql]
view plain
copy
print
?
- 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)asint) + 1
- set @编号='TCP_' + replicate('0',3-len(@id)) +cast(@idasvarchar(3))
- end
- return @编号
- end
- select dbo.Default_Num()
- create table test
- (
- id int identity(1,1) notnullprimarykey,
- 编号 varchar(7) default dbo.Default_Num(),
- 名称 varchar(3)
- )
- insert test(名称) values('001')
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|