一个拼凑sql,输出变量的 存储过程
2009-06-03 12:52
411 查看
/*
从定位信息临时表根据分站类型抽取 信息插入考勤表
*/
ALTER PROCEDURE dbo.sp_insertToAttendance
(
@cardNum nvarchar(50),
@occDay int,
@occTime datetime,
@whereCase nvarchar(100) --判断 的条件
)
AS
declare @sql nvarchar(500), --查询10分钟前到 定位信息的数量
@result int,
@sql2 nvarchar(500), --查询当前时间到10分钟后 定位信息的数量
@result2 int
set @sql=N'select @rc=count(*) from positionTemp where workSiteId in (select id from workSite where '+@whereCase+') and occTime between dateadd(mi,-10,'''+convert(char(19),@occTime,121)+''') and '''+convert(char(19),@occTime,121)+''''
set @sql2=N'select @rc=count(*) from positionTemp where workSiteId in (select id from workSite where '+@whereCase+') and occTime between '''+ convert(char(19),@occTime,121) +'''and dateadd(mi,10,'''+convert(char(19),@occTime,121)+''')'
exec sp_executesql @sql , N'@rc int output',@result output
exec sp_executesql @sql2 , N'@rc int output',@result2 output
if (@result>0 and @result2<1)--由此判断为上班定位信息
begin
if not exists(select * from attendance where cardNum=@cardNum and occDay=@occDay) --判断是否存在该员工当天的考勤记录
--begin
-- update attendance set inTime=@occTime where cardNum=@cardNum and occDay=@occDay --存在,则更新该员工的上班时间
-- end
-- else
begin
insert attendance(cardNum,inTime,occDay) values(@cardNum,@occTime,@occDay) --不存在,则插入员工的上班记录
end
end
else if(@result>1 and @result2<1) --由此判断为下班定位信息
begin
if exists(select * from attendance where cardNum=@cardNum and occDay=@occDay) --判断是否存在该员工当天的考勤记录
begin
update attendance set inTime=@occTime where cardNum=@cardNum and occDay=@occDay --存在,则更新该员工的上班时间
end
else
begin
insert attendance(cardNum,inTime,occDay) values(@cardNum,@occTime,@occDay) --不存在,则插入员工的上班记录
end
end
从定位信息临时表根据分站类型抽取 信息插入考勤表
*/
ALTER PROCEDURE dbo.sp_insertToAttendance
(
@cardNum nvarchar(50),
@occDay int,
@occTime datetime,
@whereCase nvarchar(100) --判断 的条件
)
AS
declare @sql nvarchar(500), --查询10分钟前到 定位信息的数量
@result int,
@sql2 nvarchar(500), --查询当前时间到10分钟后 定位信息的数量
@result2 int
set @sql=N'select @rc=count(*) from positionTemp where workSiteId in (select id from workSite where '+@whereCase+') and occTime between dateadd(mi,-10,'''+convert(char(19),@occTime,121)+''') and '''+convert(char(19),@occTime,121)+''''
set @sql2=N'select @rc=count(*) from positionTemp where workSiteId in (select id from workSite where '+@whereCase+') and occTime between '''+ convert(char(19),@occTime,121) +'''and dateadd(mi,10,'''+convert(char(19),@occTime,121)+''')'
exec sp_executesql @sql , N'@rc int output',@result output
exec sp_executesql @sql2 , N'@rc int output',@result2 output
if (@result>0 and @result2<1)--由此判断为上班定位信息
begin
if not exists(select * from attendance where cardNum=@cardNum and occDay=@occDay) --判断是否存在该员工当天的考勤记录
--begin
-- update attendance set inTime=@occTime where cardNum=@cardNum and occDay=@occDay --存在,则更新该员工的上班时间
-- end
-- else
begin
insert attendance(cardNum,inTime,occDay) values(@cardNum,@occTime,@occDay) --不存在,则插入员工的上班记录
end
end
else if(@result>1 and @result2<1) --由此判断为下班定位信息
begin
if exists(select * from attendance where cardNum=@cardNum and occDay=@occDay) --判断是否存在该员工当天的考勤记录
begin
update attendance set inTime=@occTime where cardNum=@cardNum and occDay=@occDay --存在,则更新该员工的上班时间
end
else
begin
insert attendance(cardNum,inTime,occDay) values(@cardNum,@occTime,@occDay) --不存在,则插入员工的上班记录
end
end
相关文章推荐
- 数据库存储过程中定义一个变量,通过sql语句在数据表中获取这个变量值的方法。
- sql关于游标和游标、存储过程结合的一个例子
- Java调用SQL存储过程 输入输出参数
- 一个简单的SQL游标示例的存储过程
- 使用oracle 的 PL/Sql 定时执行一个存储过程
- 存储过程小技巧(2)----从动态查询SQL中返回值给变量
- mysql存储过程定义一个判断事务是否异常的错误变量
- 一个SQL存储过程面试题(比较简单)
- 执行字符串SQL语句--带有参数的存储过程以及 int类型的字符串变量注意事项
- 存储过程返回参数的方法(也是执行动态sql 实现列名成为变量的功能)
- [PL/SQL]测试存储过程执行超长SQL(使用CLOB变量)
- 利用SQL未公开的存储过程实现分页(更加好用的一个!)
- sql2005与sql2008存储过程中 变量使用的一处区别
- 一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数,用SQL语句及视图、存储过程分别实现。
- [转贴]一个将表格变成 INSERT 的SQL 语句的存储过程(sql server)
- 一个自动生成预制SQL 的存储过程(二)
- 关于 字符串中的单引号, 在sql存储过程中的传输总结; 逗号分隔的多个变量提取方法.
- sql存储过程的 TOP 后跟变量报错的解决办法
- sql存储过程输出
- 在SQL存储过程中给条件变量加上单引号