產品手冊 實施方案 用戶案例 問題中心

          將個人網盤文件轉移(用戶A轉至用戶B指定目錄下)

          分類:二次開發 產品中心 1739
          — 個人網盤用戶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
          標簽:腳本 上一篇: 下一篇:
          展開更多
          預約軟件體驗

          loading...