SQL Server Note [vaynexiao]
declare @ln varchar(300),@mn varchar(200),@fn varchar(200)
declare @ln_n int,@mn_n int,@fn_n int
set @ln='李王张刘陈杨黄赵周吴徐孙朱马胡郭林何高梁郑罗宋谢唐韩曹许邓萧冯曾程蔡彭潘袁于崔任陆廖姚方金邱夏谭韦贾邹石熊孟秦阎薛侯雷白龙段郝孔邵康贺严尹钱施牛'
set @mn='德绍宗邦裕傅家積善昌世贻维孝友继绪定呈祥大正启仕执必定仲元魁家生先泽远永盛在人为任伐风树秀文逸昌文涵亮涵浩波浩博初浩歌浩广昊景哲永昌子昂智宇智然'
set @fn='123456789'
set @ln_n=len(@ln)
set @mn_n=len(@mn)
set @fn_n=len(@fn)
declare @tmp varchar(1000),@i int
set @i=100
while @i<100000001
beginset @tmp = cast(substring(@ln, cast(rand() * @ln_n as int), 1) as varchar)set @tmp = @tmp + cast(substring(@mn,cast(rand() * @mn_n as int), 1) as varchar)set @tmp = @tmp + cast(substring(@fn,cast(rand() * @fn_n as int), 1) as varchar)insert into student2 (sno, sname, pwd, salary) values ('2005' + @i, @tmp, '123456', '5000.00')set @i = @i + 1
endcreate table student2 (sno int ,sname varchar(200),pwd varchar(200),salary float(2)
)select count(1) from student2drop table student2
create/alter proc/procedure myproc
@id int,
@name varchar(200),
@content varchar(200)
as
begindeclare @birthday datetimeset @birthday='2019-12-12'delete from report_day;insert into report_day(id,name,content,create_date,birthday)values(@id,@name,@content,getdate(),@birthday);select * from report_day
endexec myproc 1, 'kobe', 'mvpppppp'execute/exec
exec pro_real_holiday '2019-02-01','2019-02-28','01'
--不指定参数名称,则按照该存储过程声明时参数的顺序来接收参数,
exec pro_real_holiday @date_end='2019-02-28',@org_code='01',@date_start='2019-02-01'
--此时可以打乱声明顺序,它自动根据名字来对应接收参数exec/execute proc_name
drop proc_name# 举例
ALTER PROCEDURE [dbo].[pro_copy_kaoqin_his_oneday]
AS
BEGIN--声明需要的变量 @date 当天日期declare @date varchar(50) set @Date = CONVERT(varchar(100),getdate()-1,23) --只针对执行调度时的前一天,调度时间为凌晨--第1大步:考勤明细表 加工至 考勤表, 且关联考勤班次,算出迟到、早退时间if( 0 = (select day_type from oams_attr_calendar where date_time=@Date) )BEGINinsert into oams_att_kaoqin (username)select username from uend--第2大步:给“应打卡且一整天没打卡的人”插入该日期的空记录--3.1 声明一个游标 保存所有“应打卡且一整天没打卡的人”的usernamedeclare @username varchar(50) declare user_cur cursor for select * from pcmc_user open user_cur fetch next from user_cur into @username --获取当前结果集中的字段usernamewhile @@fetch_status=0 begininsert into oams_att_kaoqin values(@username,@date,@date,null,null,null,null)fetch next from user_cur into @username --获取当前结果集中的字段usernameendclose user_cur deallocate user_cur
END--全勤表 简化语法案例
create PROCEDURE [dbo].[pro_sheet_month_hz]
@sheet_type VARCHAR(20),
@date_start VARCHAR(20),
@date_end VARCHAR(20),
@org_code VARCHAR(20)
--exec [pro_sheet_month_hz] @date_start='2019-02-01',@date_end='2019-02-28',@org_code='01'
AS
BEGIN--声明需要的变量 @date 当天日期
declare @date varchar(50)
set @Date = CONVERT(varchar(100),getdate()-1,23) --只针对执行调度时的前一天,调度时间为凌晨--第一大步:移植考勤历史明细 至 考勤明细表
insert into kaoqin_checkinout_his_copy
select right('00000'+u.BADGENUMBER,5) as BADGENUMBER, c.CHECKTIME, c.Memoinfo, c.sn
from [10.22.50.232].[ZKT_DB].dbo.Checkinout c
left join [10.22.50.232].[ZKT_DB].dbo.USERINFO u on u.userid=c.userid----日常加班天数create table #richang_temp(deptid varchar(50) NULL ,dname varchar(50) NULL)insert into #richang_tempselect z.deptid, sum(z.overtime) min, sum(z.overtime)/210 dayfrom oams_att_kaoqinwhere z.kq_bdate between @date_start and @date_end----请休假天数create table #jia_temp(deptid varchar(50) NULL)insert into #jia_temp select --所有临时表进行关联查询 select *from #richang_temp rtleft join #jia_temp jia on jia.deptid=d.deptid--把所有临时表关联起来查询if(@sheet_type is not null and @sheet_type='tech_day')beginselect * from pcmc_user pendELSE if(@sheet_type is not null and @sheet_type='zhineng')BEGINselect * from pcmc_user pendelsebegin select * from pcmc_user pendprint '第一大步:移植考勤历史明细 至 考勤明细表'--第四大步:给“应打卡且一整天没打卡的人”插入该日期的空记录
--3.1 声明一个游标 保存所有“应打卡且一整天没打卡的人”的username
declare @username varchar(50)
declare user_cur cursor for select a.username from ( --所有需要打卡的人 select usernamefrom pcmc_user pleft join attend_type_shift t on t.attend_shift_code=p.attend_shiftwhere t.attend_time is not null and p.disable='0') as aleft join ( --当天所有打过卡的人select p.username as busernamefrom oams_att_kaoqin kleft join pcmc_user p on p.username = k.usernamewhere CONVERT(varchar(100),kq_bdate,23) =@Date ) as b on a.username = b.busernamewhere b.busername is null
open user_cur
fetch next from user_cur into @username --获取当前结果集中的字段username
while @@fetch_status=0
begin
insert into oams_att_kaoqin values(@username,@date,@date,null,null,null,null)
print @username
fetch next from user_cur into @username --获取当前结果集中的字段username
end
close user_cur
deallocate user_curDROP TABLE #richang_tempDROP TABLE #jia_tempEND
SQL Server Note [vaynexiao]相关推荐
- sql2017 for linux,Installing SQL Server 2017 for Linux on Ubuntu 18.04 LTS
Installing SQL Server 2017 for Linux on Ubuntu 18.04 LTS 08/29/2018 3 分钟可看完 本文内容 [UPDATE as of 2018/ ...
- 【翻译】SQL Server索引进阶:第八级,唯一索引
原文地址: Stairway to SQL Server Indexes: Level 8,Unique Indexes 本文是SQL Server索引进阶系列(Stairway to SQL Ser ...
- sql server 数据库性能忧化
一.数据库设计优化 1.不要使用游标. 使用游标不仅占用内存,而且还用不可思议的方式锁定表,它们可以使DBA所能做的一切性能优化等于没做.游标里每执行一次fetch就等于执行一次select. 2.创 ...
- 【SQL】IS NULL and = NULL 在 sql server 中的区别
2019独角兽企业重金招聘Python工程师标准>>> 当我们在 sql server 中用 DECLARE 申明一个变量时, sql server 将会把变量存储在SQLs 内存空 ...
- SQL Server 默认跟踪(Default Trace)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 基础知识(Rudimentary Knowledge) 查看默认跟踪信息(Default Tr ...
- MS SQL SERVER 中几个函数的用法
1.STUFF 将第一个参数,从第start位置开始的length个字符(包含第start位置,位置从1开始),用第四个参数替换. Syntax ( character_expression , st ...
- 【转】在SQL Server中通过SQL语句实现分页查询
在SQL Server中通过SQL语句实现分页查询 2008年01月06日 星期日 12:28 建立表: CREATE TABLE [TestTable] ( [ID] [int] IDENTITY ...
- sql server无效的对象名称 - 但表列在SSMS表列表中
本文翻译自:sql server invalid object name - but tables are listed in SSMS tables list I am attempting to ...
- 使用JDBC连接SQL Server 2000 命名实例(Named Instance)
最近比较闲,就爱摆弄一些玩意,前时间对ruby on rails比较感兴趣,就想继续看看,但是系统坏了好几次,前段时间配好的eclipse+rdt+sqlserver的环境也就得重新diy了: ...
最新文章
- Java重写equals和hashCode方法
- TabControl控件和TabPage
- ERROR org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode: Exception in doCheckpoint
- 摆胯教学分解_聚十年求索,筑理想课堂——厦门市梧侣学校十周年庆区级教学小学数学(数与形)...
- leetcode - 198. 打家劫舍
- servlet学习笔记二
- php程序如何加密(php_screw)
- 【MAC】Mac下配置perl的DBD::MySQL模块
- 电脑屏幕卡住了按什么都没反应_刚买2个月,联想电脑屏幕出现坏点,售后回复:坏点不够3个不能保修...
- c语言教材系统管理课设
- 键盘符号中英文对照表
- c# mailgun 发送邮件测试
- java 汉字转拼音_java中将汉字转换成拼音的实现代码
- 黑马程序员——Java的代理模式
- 教你识别思科交换机型号
- 【html标签复习】
- APS生产排单软件模拟排程功能
- html表头纵向,实现纵向表头的table
- NiFi分享第一期-安全认证(证书认证)
- 哈勃深空场以及星系合并的宇宙瑰丽景象