网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.sql2k中新增加的Function的sqlbo.
.基于SQL SERVER的分页存储过程.
.数据库的查、增、删、改.
.SQL Server 2000启动1069错误(由.
.初学者必读:提高SQL执行效率的几.
.用SQL SERVER记录站点日志.
.利用"SQL"语句自动生成序号的两种.
.使用链接服务器执行远程数据库上.
.SQL Server性能分析参数 .
.带你深入了解数据库管理系统层次.
.SQL Server数据库连接查询的种类.
.循环插入一定时间范围内的随机日.
.sql server 2005中的表分区.
.SQL Server2000 索引结构及其使用.
.SQL2005生成SQL2000脚本的一些解.
.sql server关于函数中如何使用Ge.
.sql server中如何计算农历.
.讲解使用SQL Server升级顾问的详.
.教你轻松解决数据库非事务表回滚.
.使用正规表达式编写更好的SQL.

轻松掌握"SQL"服务存储过程的实例脚本

发表日期:2008-3-10


SQL服务存储过程:

CREATE PROCEDURE SP_DAY_SERVICE AS


UPDATE RES_USER

SET RES_USER.BC=CQ_HB.XBC

FROM RES_USER,CQ_HB

WHERE RES_USER.ACCOUNT_ID=CQ_HB.ACCOUNT_ID AND

DATEDIFF(DAY,CQ_HB.SXRQ,GETDATE())>=0

DELETE FROM CQ_HB WHERE DATEDIFF(DAY,CQ_HB.SXRQ,GETDATE())>=0 --換班


UPDATE RES_USER SET RES_USER.ZW=CQ_JS.XZW

FROM RES_USER,CQ_JS

WHERE RES_USER.ACCOUNT_ID=CQ_JS.ACCOUNT_ID AND

DATEDIFF(DAY,CQ_JS.SXRQ,GETDATE())>=0

DELETE FROM CQ_JS WHERE DATEDIFF(DAY,CQ_JS.SXRQ,GETDATE())>=0 --晉升


UPDATE RES_USER

SET RES_USER.BMID=CQ_YD.XZBM,RES_USER.KBID=CQ_YD.XZKB,

RES_USER.XBID=CQ_YD.XZZX,RES_USER.ZW=CQ_YD.XZZW

FROM RES_USER,CQ_YD

WHERE RES_USER.ACCOUNT_ID=CQ_YD.ACCOUNT_ID AND

DATEDIFF(DAY,CQ_YD.SXRQ,GETDATE())>=0

DELETE FROM CQ_YD WHERE DATEDIFF(DAY,CQ_YD.SXRQ,GETDATE())>=0 --異動

 

UPDATE RES_USER

SET RES_USER.STATUS=1

FROM RES_USER,CQ_LZ

WHERE RES_USER.ACCOUNT_ID=CQ_LZ.ACCOUNT_ID AND

DATEDIFF(DAY,CQ_LZ.SXRQ,GETDATE())>=0

DELETE FROM CQ_LZ WHERE DATEDIFF(DAY,CQ_LZ.SXRQ,GETDATE())>=0 --離職

 

--生成崗位除名數據


INSERT INTO CQ_GWHF(ACCOUNT_ID,BM,KB,ZXB,FULL_NAME)

SELECT TMP0033.ACCOUNT_ID, RES_USER.BMID,RES_USER.KBID,RES_USER.XBID,RES_USER.FULL_NAME FROM

(

SELECT ACCOUNT_ID

FROM

(

SELECT ACCOUNT_ID,SUM(T) AS KGT

FROM

(

SELECT ACCOUNT_ID,

ST,ET,datediff(HH,ST,ET) as T,

CASE WHEN (DATEDIFF(DAY,ST,GETDATE())>=0) AND (DATEDIFF(DAY,ET,GETDATE())<=0) THEN 1 ELSE 0 END AS KG

from

(

select ACCOUNT_ID,

case when KSSJ>convert(smalldatetime,CONVERT(NVARCHAR(4),GETDATE(),111)+'/'+CONVERT(NVARCHAR(2),MONTH(GETDATE()))+'/01') then KSSJ else convert(smalldatetime,CONVERT(NVARCHAR(4),GETDATE(),111)+'/'+CONVERT(NVARCHAR(2),MONTH(GETDATE()))+'/01') end as ST,

case when JSSJ from CQ_KG

where KSSJ>convert(smalldatetime,CONVERT(NVARCHAR(4),GETDATE(),111)+'/'+CONVERT(NVARCHAR(2),MONTH(GETDATE()))+'/01')

) as Tmp02

)AS TMP31

GROUP BY ACCOUNT_ID

) AS TMP0032

WHERE KGT>72 --三天時間

) AS TMP0033

LEFT JOIN RES_USER

ON TMP0033.ACCOUNT_ID=RES_USER.ACCOUNT_ID


/**//*- RES_USER 表中的STATUS

0 表示 在職

1 崗位除名狀態中

2 離職

*/

UPDATE RES_USER

SET RES_USER.STATUS=2

FROM RES_USER,CQ_GWHF

WHERE RES_USER.ACCOUNT_ID=CQ_GWHF.ACCOUNT_ID AND

DATEDIFF(DAY,CQ_GWHF.CMRQ,GETDATE())>=15 AND CQ_GWHF.STATUS=0 --崗位除名 離職


UPDATE CQ_GWHF

SET STATUS=1

WHERE DATEDIFF(DAY,HFRQ,GETDATE())=0 AND STATUS=0


UPDATE RES_USER

SET RES_USER.STATUS=0

FROM RES_USER,CQ_GWHF

WHERE RES_USER.ACCOUNT_ID=CQ_GWHF.ACCOUNT_ID AND

DATEDIFF(DAY,CQ_GWHF.HFRQ,GETDATE())=0 AND CQ_GWHF.STATUS=1 --崗位恢復


UPDATE RES_USER --新進

SET RES_USER.CBID=CQ_XJ.XCB,RES_USER.BMID=CQ_XJ.XBM,RES_USER.KBID=CQ_XJ.XKB,RES_USER.XBID=CQ_XJ.XXB,

RES_USER.ZW=CQ_XJ.XZW,RES_USER.BC=CQ_XJ.XBC

FROM RES_USER,CQ_XJ

WHERE RES_USER.BMID='NA' AND RES_USER.ACCOUNT_ID=CQ_XJ.ACCOUNT_ID AND

DATEDIFF(DAY,CQ_XJ.SXRQ,GETDATE())>=0

DELETE FROM CQ_XJ WHERE ACCOUNT_ID IN( SELECT ACCOUNT_ID FROM RES_USER ) AND DATEDIFF(DAY,CQ_XJ.SXRQ,GETDATE())>=0


INSERT INTO RES_USER(ACCOUNT_ID,FULL_NAME,CBID,BMID,KBID,XBID,ZW,BC)

SELECT ACCOUNT_ID,FULL_NAME,XCB,XBM,XKB,XXB,XZW,XBC

FROM CQ_XJ

WHERE DATEDIFF(DAY,CQ_XJ.SXRQ,GETDATE())>=0

DELETE FROM CQ_XJ WHERE DATEDIFF(DAY,CQ_XJ.SXRQ,GETDATE())>=0

 

INSERT INTO MFDREPORT(ACCOUNT_ID,FULL_NAME,CBID,BMID,KBID,XBID,BC,RQ)

SELECT ACCOUNT_ID,FULL_NAME,CBID,BMID,KBID,XBID,BC,CONVERT(NVARCHAR(10),GETDATE(),111) AS RQ

FROM RES_USER

WHERE BMID<>'NA' AND STATUS<>2

GO

上一篇:在SQL Server数据库中实现数据的转移 人气:917
下一篇:视图上含有row_number分析函数没法走索引 人气:1013
浏览全部SQL的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐