码迷,mamicode.com
首页 > 数据库 > 详细

工作中使用sql杂记

时间:2017-04-21 14:28:47      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:varchar   hsf   技术分享   convert   bak   sql   插入时间   开始   获取   

sql循环

技术分享
--所有需要备份的表
DECLARE @fromtbs NVARCHAR(500)=hz_com_user,hz_bam_department,hz_hr_gzhsfw,hz_hr_XiaoWeiComPany,hz_com_parameter,hz_bam_position,hz_bam_dep_target,hz_bom_userall_maincofnig,,
@index INT,                                --‘,‘所在的位置 将所有表切割为单表用
@fromtable NVARCHAR(50),                --需要备份的原表名称
@totable NVARCHAR(50),                    --进行备份的新表名称
@insertfields NVARCHAR(1000)=‘‘,        --插入时间和表名对应关系的str
@sql NVARCHAR(3000),                    --因表名为变量 需要执行的sql语句
@temptablename NVARCHAR(50)                --临时拼接的表名

--使用index 和 substring方法进行循环 
--获取第一个,号所在的位置
SET @index= (SELECT CHARINDEX(,,@fromtbs))

--开始循环
WHILE @index>0
BEGIN
--截取第一个位置所在的表名
SET @fromtable=(SELECT SUBSTRING(@fromtbs,1,@index-1))
--截取剩下的所有需要备份的表 准备下次循环截取
SET @fromtbs = (SELECT SUBSTRING(@fromtbs,@index+1,LEN(@fromtbs)))
--为要备份的表取名
SET @totable=@fromtable+_bak_+(SELECT CONVERT(varchar(100), GETDATE(), 112))
    
    --如果存在删除 不存在select 原表 into 备份表
    SET @sql = IF  EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N‘‘[dbo].+@totable+‘‘‘‘+)) DROP table +@totable
    EXEC(@sql)
    SET @sql= select * into +@totable+ from HRMS_Pro_20170401.dbo.+@fromtable+‘‘
    EXEC(@sql)
    --拼接所有的备份表名称 便于插入R_Date_And_TableName表 
    SET @insertfields+=(,‘‘‘+@totable+‘‘‘‘)
SET @index= (SELECT CHARINDEX(,,@fromtbs))
END
View Code

 

工作中使用sql杂记

标签:varchar   hsf   技术分享   convert   bak   sql   插入时间   开始   获取   

原文地址:http://www.cnblogs.com/mnsn/p/6743266.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!