-- 功能:用存储过程实现对工作表和休息表的更新
--
-- 创建时间:2010-12-14
----------------------------- 创建存储过程 -------------------------------
--1、工作转休息
-----名称:Proc_UpdateDayOff
-----参数:@offdate , @remark , @flag
create proc Proc_UpdateDayOff @offdate datetime, @remark nvarchar(50) , @flag bit
as
begin tran -- 开始事务
insert into DayOff(RestDate,Remarks,Flag) values (@offdate,@remark,@flag)
delete from WorkDay where WorkDate = @offdate
if @@error > 0 -- 判断操作是否出现错误
begin
Rollback tran -- 出现错误 -> 回滚
select 0
end
else
begin
commit tran -- 没有错误 -> 执行
select 1
end
--1、工作转休息
----定义参数
declare @offdate datetime
declare @remark = nvarchar(50)
declare @flag = bit
----设置参数
set @offdate = '2010/02/01'
set @remark = '放假'
set @flag = 1
----执行
EXEC Proc_UpdateDayOff @offdate, @remark,@flag
--2、休息转工作
-----名称:Proc_UpdateWorkDay
-----参数:@ondate
-- 把休息表的数据添加到工作表
create proc Proc_UpdateWorkDay @ondate datetime
as
begin tran -- 开始事务
insert into WorkDay(WorkDate) values (@ondate)
delete from DayOff where RestDate = @ondate
if @@error > 0 -- 判断操作是否出现错误
begin
Rollback tran -- 出现错误 -> 回滚
return 0
end
else
begin
commit tran -- 没有错误 -> 执行
select 1
end
--2、休息转工作
----定义参数
declare @ondate datetime
----设置参数
set @ondate = '2010/2/3'
---执行
EXEC Proc_UpdateWorkDay @ondate
--3、设定法定节日
----名称: Proc_SetDayOff
----参数: @starttime,@endtime, @remark, @flag
alter proc Proc_SetDayOff
(
@starttime datetime, --开始日期
@endtime datetime, --结束日期
@remark nvarchar(50), --备注
@flag bit --是否为法定节日
)
as
begin tran -- 开始事务
while(datediff(d,@starttime,@endtime) >= 0 )
begin
insert into DayOff(RestDate,Remarks,Flag) values (@starttime,@remark,@flag)
delete from WorkDay where WorkDate = @starttime
set @starttime = dateadd(d,1,@starttime)
if @@error > 0 -- 判断操作是否出现错误
begin
Rollback tran -- 出现错误 -> 回滚
select 0
end
end
commit tran -- 没有错误 -> 执行
select 1
--3、设定法定节日
----定义参数
declare @starttime datetime
declare @endtime datetime
declare @remark nvarchar(50)
declare @flag bit
----赋值
set @starttime = '1905/6/25'
set @endtime = '1905/6/28'
set @remark = '放假'
set @flag = 0
----执行
EXEC Proc_SetDayOff @starttime,@endtime,@remark,@flag
----查询执行后结果
select * from DayOff
select * from WorkDay