/*

从定位信息临时表根据分站类型抽取 信息插入考勤表

*/

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

转载于:https://www.cnblogs.com/koolay/archive/2009/06/03/1495259.html

一个拼凑sql,输出变量的 存储过程相关推荐

  1. 一个利用sql 语句来实现分页的存储过程

    最近一直在研究存储过程和函数,感觉这趟水有点浑,所以我决定要趟这趟浑水. 一些是一个sql server的分页存储过程,可以结合页面设计来进行理解 假设场景有,上一页 下一页两个按钮,排序方式悬着下拉 ...

  2. oracle存储过程rowcount用法,Oracle带输入、输出参数的存储过程回来受影响的行数SQL%ROWCOUNT...

    当前位置:我的异常网» SQL » Oracle带输入.输出参数的存储过程回来受影响的行数 Oracle带输入.输出参数的存储过程回来受影响的行数SQL%ROWCOUNT www.myexceptio ...

  3. mysql执行字符串sql结果复制被变量_mysql存储过程-执行字符串变量的sql

    SET @xx="name,bm"; SET @sql1 = CONCAT('select ',@xx,' from people'); prepare s1 from @sql1 ...

  4. SQL Server基础之存储过程

    阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储过程   简单来说,存储过程就是一条或 ...

  5. Sql Server实用操作-存储过程精解

    CREATE PROCEDURE 创建存储过程,存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合.可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过 ...

  6. 在asp中怎么调用带输出参数的存储过程

    这是我写的存储过程 CREATE proc hz @count2 bigint output, @minsl varchar, @maxsl varchar as create table #tmp( ...

  7. 使用变量_存储过程和函数及变量的使用

    存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程和函数可以避免开发人员重复的编写相同的SQL语句.而且,存储过程和函数是在mys ...

  8. 常用的sql server 函数、存储过程、临时表总结

    最近写T-sql语句比较多, 想把这段时间遇到过的貌似有用的一些sql server的函数,存储过程,临时表等总结一下,以便不时之需,当然不会一下子所有都总结,但会分段总结: 1)存储过程定义: cr ...

  9. Sql Server系列:存储过程

    1 存储过程简介 存储过程是使用T-SQL代码编写的代码段.在存储过程中,可以声明变量.执行条件判断语句等其他编程功能.在MS SQL Server 2012中存储过程主要分三类:系统存储过程.自定义 ...

最新文章

  1. FPGA的设计艺术(5)STA实战之时钟偏斜对建立保持时间的影响以及时序报告分析
  2. 链表反转leetcode206
  3. 2019.3.1版本pycharm撤销及恢复图解
  4. 数据增强:数据有限时如何使用深度学习 ?
  5. plsql大字段保存类型_大揭秘,学习python,为什么数据类型有这么重要
  6. show table status 参数详解
  7. 如何打开苹果Mac触控板的三指拖移功能?
  8. PostgreSQL学习手册(函数和操作符三)
  9. html学术模板,用Latex写学术论文(一): IEEE模板和\documentclass
  10. winform DevComponents.DotNetBar2 添加到工具栏方法
  11. unity 无法打包
  12. Ti的C28x系列的DSP(28069)(28377D)使用经验,CMD文件
  13. word高级技能之自动生成图目录/表目录
  14. 单个网页的搜索引擎优化(SEO)策略
  15. UNITY笔技--DOTS/ECS
  16. wifi转串口芯片——ESP8266:配置与使用
  17. linux-安装及管理程序(一) rpm源安装
  18. Lazarus 兼容 Delphi 的跨平台 IDE
  19. Mysql学习笔记(一):子查询与选择
  20. 【软考系统架构设计师】2021年下系统架构师论文写作历年真题

热门文章

  1. 想做点副业,一天200-300就行
  2. 分享一个四两拨千斤的真实故事
  3. 你自己的事,你不操心谁操心?
  4. 为什么现在越来越多的人买手机都喜欢从官网购买,而不从实体店买?
  5. python入门——P34异常处理:你不可能总是对的2
  6. pppoe拨号中的server name和service name
  7. integration_Integration Services性能最佳实践–写目标
  8. [LOJ6278]数列分块入门 2
  9. 直接插入_折半插入(python)
  10. whereis 命令(转)