— 个人网盘用户A 所有网盘数据都转至 用户B 根目录下的一个目录中(此目录自动创建,名称:转自【用户A】_YYYYmmdd)
BEGIN
Declare @strUserLogin1 as nvarchar(32)
Declare @strUserLogin2 as nvarchar(32)
Declare @strUserName1 as nvarchar(64)
Declare @strUserName2 as nvarchar(64)
Declare @nUserIndex1 as int
Declare @nUserIndex2 as int
Declare @strTabIndex1 as nchar(1)
Declare @strTabIndex2 as nchar(1)
Declare @strCatalogID as nvarchar(36)
Declare @strCatalogName as nvarchar(64)
Declare @strSQL as nvarchar(1024)
Declare @strOwner as nvarchar(32)
Declare @strOwnerName as nvarchar(64)
Declare @nNDIndex as int
Declare @strDate as nvarchar(8)
— 指定用户A 与 用户B 的登录名,最好小写
Set @strUserLogin1 = N’用户A’
Set @strUserLogin2 = N’用户B’
Set @nUserIndex1 = -1
Set @nUserIndex2 = -1
— 申请游标,得到用户个人网盘信息
Declare userindex_cursor cursor for (SELECT Lower( CN_S_OWNER_ID ), CN_S_OWNER_NAME, CN_N_NDX FROM OI_ND_USER WHERE CN_S_OWNER_ID IN ( @strUserLogin1, @strUserLogin2 ) )
— 打开游标
Open userindex_cursor
— 开始循环游标变量
Fetch Next From userindex_cursor into @strOwner, @strOwnerName, @nNDIndex
— FETCH 后的游标状态
While @@FETCH_STATUS = 0
Begin
If @strOwner = @strUserLogin1
Begin
Set @nUserIndex1 = @nNDIndex
Set @strUserName1 = @strOwnerName
End
Else
Begin
Set @nUserIndex2 = @nNDIndex
Set @strUserName2 = @strOwnerName
End
— 转到下一个游标
Fetch Next From userindex_cursor into @strOwner, @strOwnerName, @nNDIndex
End
— 关闭游标
Close userindex_cursor
— 释放游标
Deallocate userindex_cursor
— 判断用户索引
If @nUserIndex1 = -1 Or @nUserIndex2 = -1
Begin
Print N’指定的用户不存在’
Return
End
— 生成表索引
Set @strTabIndex1 = Str( @nUserIndex1, 1 )
Set @strTabIndex2 = Str( @nUserIndex2, 1 )
— 在用户B根目录下创建存放转移数据的目录:转自【用户A】_YYYYmmdd
Print N’创建转移数据的目录’
Set @strCatalogID = NewID()
Set @strDate = Left( Convert( char(8), GetDate(), 112 ), 8 )
Set @strCatalogName = ‘转自【’ + @strUserName1 + ‘】_’ + @strDate
Set @strSQL = N’INSERT INTO OI_ND_CATALOG ( CN_S_ID, CN_S_NAME, CN_N_DOC_LIST_TYPE, CN_N_SHARE, CN_S_CREATOR_ID, CN_S_CREATOR, CN_T_CREATE, CN_N_ORDER, CN_S_PARENTID ) ‘ +
N’VALUES ( ”’ + @strCatalogID + ”’, ”’ + @strCatalogName + ”’, 0, 0, ”’ + @strUserLogin2 + ”’, ”’ + @strUserName2 + ”’, GetDate(), 0, ”” )’
EXEC( @strSQL )
— 索引值相同,直接替换
If @nUserIndex1 = @nUserIndex2
Begin
Print N’用户索引相同’
— 个人文档表
Print N’个人文档表’
Set @strSQL = N’UPDATE OI_ND_DOC_’ + @strTabIndex1 + N’ SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’, CN_S_CREATOR = ”’ + @strUserName2 + N”’ WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
EXEC( @strSQL )
— 根级目录文档
Print N’根级目录文档’
Set @strSQL = N’UPDATE OI_ND_CATALOG_HLINK_’ + @strTabIndex1 + N’ SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’, CN_S_CATALOG_ID = ”’ + @strCatalogID + N”’ WHERE (CN_S_CATALOG_ID IS NULL OR CN_S_CATALOG_ID = ””) AND CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
EXEC( @strSQL )
— 子级目录文档
Print N’子级目录文档’
Set @strSQL = N’UPDATE OI_ND_CATATLOG_HLINK_’ + @strTabIndex1 + N’ SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’ WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
EXEC( @strSQL )
End
— 索引值不同,数据记录迁移(记录复制至 B用户索引表,删除A用户索引表记录)
Else
Begin
Print N’用户索引不相同’
— 个人文档表,复制
Print N’个人文档表,复制’
Set @strSQL = N’INSERT INTO OI_ND_DOC_’ + @strTabIndex2 + N’ ( CN_S_ID, CN_S_FILE_NAME, CN_S_FILE_TYPE, CN_N_FILE_SIZE, CN_T_FILE_DATETIME, CN_S_FILE_MD5, CN_S_FILE_SERVER, CN_G_FILE_ID, CN_G_PDF_FILE_ID, CN_G_FLASH_FILE_ID, CN_G_THUMB_IMAGE_ID, CN_S_THUMB_URL, ‘ +
N’CN_S_CREATOR_ID, CN_S_CREATOR, CN_T_CREATE, CN_S_VERSION, CN_S_TAGS_NAME, CN_N_SHARE, CN_N_MOD, CN_S_NOTE, CN_S_SYS_NOTE ) ‘ +
N’SELECT CN_S_ID, CN_S_FILE_NAME, CN_S_FILE_TYPE, CN_N_FILE_SIZE, CN_T_FILE_DATETIME, CN_S_FILE_MD5, CN_S_FILE_SERVER, CN_G_FILE_ID, CN_G_PDF_FILE_ID, CN_G_FLASH_FILE_ID, CN_G_THUMB_IMAGE_ID, CN_S_THUMB_URL, ‘ +
N”” + @strUserLogin2 + N”’, ”’ + @strUserName2 + N”’, CN_T_CREATE, CN_S_VERSION, CN_S_TAGS_NAME, CN_N_SHARE, CN_N_MOD, CN_S_NOTE, CN_S_SYS_NOTE ‘ +
N’FROM OI_ND_DOC_’ + @strTabIndex1 +
N’ WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
EXEC( @strSQL )
— 删除
Print N’个人文档表,删除’
Set @strSQL = N’DELETE OI_ND_DOC_’ + @strTabIndex1 + N’ WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
EXEC( @strSQL )
— 根级目录文档,复制
Print N’根级目录文档,复制’
Set @strSQL = N’INSERT INTO OI_ND_CATALOG_HLINK_’ + @strTabIndex2 + N’ ( CN_S_CREATOR_ID, CN_S_CATALOG_ID, CN_S_OBJ_ID, CN_S_DISPLAY_NAME, CN_S_FILE_TYPE, CN_N_FILE_SIZE, CN_S_THUMB_URL, CN_T_FILE_DATETIME, CN_S_EXTATTR, CN_N_SHARE, CN_T_LINK, CN_S_TAGS ) ‘ +
N’SELECT ”’ + @strUserLogin2 + N”’, ”’ + @strCatalogID + N”’, CN_S_OBJ_ID, CN_S_DISPLAY_NAME, CN_S_FILE_TYPE, CN_N_FILE_SIZE, CN_S_THUMB_URL, CN_T_FILE_DATETIME, CN_S_EXTATTR, CN_N_SHARE, CN_T_LINK, CN_S_TAGS ‘ +
N’FROM OI_ND_CATALOG_HLINK_’ + @strTabIndex1 +
N’ WHERE (CN_S_CATALOG_ID IS NULL OR CN_S_CATALOG_ID = ””) AND CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
EXEC( @strSQL )
— 删除
Print N’根级目录文档,删除’
Set @strSQL = N’DELETE OI_ND_CATALOG_HLINK_’ + @strTabIndex1 + N’ WHERE (CN_S_CATALOG_ID IS NULL OR CN_S_CATALOG_ID = ””) AND CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
EXEC( @strSQL )
— 子级目录文档,复制
Print N’子级目录文档,复制’
Set @strSQL = N’INSERT INTO OI_ND_CATALOG_HLINK_’ + @strTabIndex2 + N’ ( CN_S_CREATOR_ID, CN_S_CATALOG_ID, CN_S_OBJ_ID, CN_S_DISPLAY_NAME, CN_S_FILE_TYPE, CN_N_FILE_SIZE, CN_S_THUMB_URL, CN_T_FILE_DATETIME, CN_S_EXTATTR, CN_N_SHARE, CN_T_LINK, CN_S_TAGS ) ‘ +
N’SELECT ”’ + @strUserLogin2 + N”’, CN_S_CATALOG_ID, CN_S_OBJ_ID, CN_S_DISPLAY_NAME, CN_S_FILE_TYPE, CN_N_FILE_SIZE, CN_S_THUMB_URL, CN_T_FILE_DATETIME, CN_S_EXTATTR, CN_N_SHARE, CN_T_LINK, CN_S_TAGS ‘ +
N’FROM OI_ND_CATALOG_HLINK_’ + @strTabIndex1 +
N’ WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
EXEC( @strSQL )
— 删除
Print N’子级目录文档,删除’
Set @strSQL = N’DELETE OI_ND_CATALOG_HLINK_’ + @strTabIndex1 + N’ WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
EXEC( @strSQL )
End
— 未分表的数据表,直接替换
— 回收站,原根目录文档
Print N’回收站,原根目录文档’
Set @strSQL = N’UPDATE OI_ND_DOC_DELETE SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’, CN_S_CREATOR = ”’ + @strUserName2 + N”’, CN_S_DELETED_BY_ID = ”’ + @strUserLogin2 + N”’, CN_S_DELETED_BY = ”’ + @strUserName2 + N”’, CN_G_CATALOG_ID = ”’ + @strCatalogID + N”’ ‘ +
N’WHERE (CN_G_CATALOG_ID IS NULL OR CN_G_CATALOG_ID = ””) AND CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
EXEC( @strSQL )
— 回收站,其它目录文档
Print N’回收站,其它目录文档’
Set @strSQL = N’UPDATE OI_ND_DOC_DELETE SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’, CN_S_CREATOR = ”’ + @strUserName2 + N”’, CN_S_DELETED_BY_ID = ”’ + @strUserLogin2 + N”’, CN_S_DELETED_BY = ”’ + @strUserName2 + N”’ ‘ +
N’WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
EXEC( @strSQL )
— 历史表
Print N’历史表’
Set @strSQL = N’UPDATE OI_ND_DOC_HISTORY SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’, CN_S_CREATOR = ”’ + @strUserName2 + N”’, CN_S_OPERATOR_ID = ”’ + @strUserLogin2 + N”’, CN_S_OPERATOR = ”’ + @strUserName2 + N”’ ‘ +
N’WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
EXEC( @strSQL )
— 根级目录
Print N’根级目录’
Set @strSQL = N’UPDATE OI_ND_CATALOG SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’, CN_S_CREATOR = ”’ + @strUserName2 + N”’, CN_S_PARENTID = ”’ + @strCatalogID + N”’ ‘ +
N’WHERE (CN_S_PARENTID IS NULL OR CN_S_PARENTID = ””) AND CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
EXEC( @strSQL )
— 子级目录
Print N’子级目录’
Set @strSQL = N’UPDATE OI_ND_CATALOG SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’, CN_S_CREATOR = ”’ + @strUserName2 + N”’ ‘ +
N’WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
EXEC( @strSQL )
— 共享出去信息替换
Print N’共享出去信息替换’
Set @strSQL = N’UPDATE OI_ND_SHARE_OUT SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’ WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
EXEC( @strSQL )
— 删除共享进来 A -> B,B -> A 记录
Print N’删除共享进来 A -> B,B -> A 记录’
Set @strSQL = N’DELETE OI_ND_SHARE_IN WHERE (CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N”’ AND CN_S_SHARER_ID = ”’ + @strUserLogin2 + N”’) OR (CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’ AND CN_S_SHARER_ID = ”’ + @strUserLogin1 + N”’)’
EXEC( @strSQL )
— 共享进来信息替换
Print N’共享进来信息替换’
Set @strSQL = N’UPDATE OI_ND_SHARE_IN SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’, CN_S_CREATOR = ”’ + @strUserName2 + N”’ WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
EXEC( @strSQL )
END
GO
上一篇: Mobox企业云盘30用户免费
下一篇: 合同订单管理-售后服务要求