zoukankan      html  css  js  c++  java
  • 基础平台数据导入(游标的使用)


    select * from  [ESFM_PlatForm2].[dbo].[SysUser]-- where UserName not like '%管理%' 
    select * from dbo.basStaff
    select * from dbo.tbl_Dept
    select * from dbo.basGroups
    select * from dbo.tbl_Group
    select * from dbo.tbl_Group_FromXH
    --用户
    insert into [SysUser]
    (UserGuid,UserCode,UserID,AreaCode,UserName,UserSex,UserIsUse,UserPass)
    select Replace(newid(),'-',''),StaffNo,StaffNo,'001',StaffName,case sex when '0' then '' else '' end ,'0','123'
     
    from basStaff where userID not like '%admin%'

    --机构
    insert into tbl_Dept
    (DeptGuid,DeptCode,DeptName,IsUse,lasttime)
     
    select Replace(newid(),'-',''),GroupNo,GroupName,1,getdate() from basGroups

    --机构2位改成3位
    --
    ==========================================================
    --
    开始事务
    BEGIN TRAN

    --不显示计数信息
    SET NOCOUNT ON

    DECLARE @tempDeptCode varchar(512)

    --声明游标
    DECLARE CRMPSContact_cursor CURSOR FOR 
    select [DeptCode] from dbo.tbl_Dept

    --打开游标
    OPEN CRMPSContact_cursor

    --取第一行的值给变量
    FETCH NEXT FROM CRMPSContact_cursor 
    INTO @tempDeptCode

    --执行语句
    declare @current int
    declare @length int
    declare @source varchar(50)
    declare @temp varchar(50)
    declare @dest varchar(100)

    set @source = @tempDeptCode
    set @length = len(@source)
    set @dest = ''
    set @current = 1
    print @source
    while @current < @length
    begin
        
    set @temp = substring(@source@current2)
        
    set @dest = @dest +'0' + @temp
        
    set @current = @current + 2
    end
    print @dest
    update tbl_Dept Set DeptCode=@dest where DeptCode=@tempDeptCode

    --执行错误回滚
    if @@error!=0
    begin
    rollback tran
    return
    end

    --移动游标,其它所有行更新操作(当到结尾时退出)
    WHILE @@FETCH_STATUS = 0
    BEGIN 
    --游标移到下一行
    FETCH NEXT FROM CRMPSContact_cursor 
    INTO @tempDeptCode

    --执行语句,从第二行开始
    set @source = @tempDeptCode
    set @length = len(@source)
    set @dest = ''
    set @current = 1
    print @source
    while @current < @length
    begin
        
    set @temp = substring(@source@current2)
        
    set @dest = @dest +'0' + @temp
        
    set @current = @current + 2
    end
    print @dest
    update tbl_Dept Set DeptCode=@dest where DeptCode=@tempDeptCode



    --执行错误回滚
    if @@error!=0
    begin
    rollback tran
    return
    end

    END

    --关闭游标
    CLOSE CRMPSContact_cursor

    --释放游标
    DEALLOCATE CRMPSContact_cursor

    --提交所有变更
    COMMIT TRAN

    --恢复设置
    SET NOCOUNT OFF
    GO 
    --==========================================================


    --
    insert into tbl_Group
    (GroupNo,GroupName,Memo,CreatorID,LastTime,IsPublic,Guid)
     
    select GroupNo,GroupName,Memo,CreatorID,Getdate(),1,Replace(newid(),'-',''from tbl_Group_FromXH

    用函数也应该可以实现二位分级到三位分级的转换
    下面是网上位朋友的代码,有空再调试一下
    --要有好的心情(270148119) 16:03:02
    if exists (select id from dbo.sysobjects where id = object_id(N'[dbo].[ConvertCode]'and xtype in (N'FN', N'IF', N'TF'))
    drop function [dbo].[ConvertCode]
    GO

    CREATE FUNCTION [dbo].[ConvertCode] (@Source VARCHAR (50))
      
    RETURNS VARCHAR (100AS
    BEGIN
        
    declare @current int,
            
    @length int,
            
    @temp varchar(50),
            
    @dest varchar(100)

        
    set @length = len(@Source)
        
    set @dest = ''
        
    set @current = 1
        
    while @current < @length
        
    begin
            
    set @temp = substring(@Source@current2)
            
    set @dest = @dest +'0' + @temp
            
    set @current = @current + 2
        
    end
        
    return @dest
    END
    GO

    declare @source varchar(50)
    set @source = '12345678'
    select dbo.ConvertCode(@source)
    GO

    --要有好的心情(270148119) 16:03:22
    --
    函数体可以根据你的具体要求在修改

  • 相关阅读:
    HDU 3951 (博弈) Coin Game
    HDU 3863 (博弈) No Gambling
    HDU 3544 (不平等博弈) Alice's Game
    POJ 3225 (线段树 区间更新) Help with Intervals
    POJ 2528 (线段树 离散化) Mayor's posters
    POJ 3468 (线段树 区间增减) A Simple Problem with Integers
    HDU 1698 (线段树 区间更新) Just a Hook
    POJ (线段树) Who Gets the Most Candies?
    POJ 2828 (线段树 单点更新) Buy Tickets
    HDU 2795 (线段树 单点更新) Billboard
  • 原文地址:https://www.cnblogs.com/gfwei/p/1060105.html
Copyright © 2011-2022 走看看