数据同步存储过程代码

USE [LTI]
GO
/****** Object: StoredProcedure [dbo].[P_SyncStaff] Script Date: 03/04/2015 09:38:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[P_SyncStaff]
AS
BEGIN
begin transaction

truncate table Sync_StaffInfo

SELECT * INTO #TEMP_DictionaryItem
FROM HRFoundation.HRFoundation_PS.dbo.DictionaryItem

SELECT * INTO #TEMP_OA_Base_PublicCode
FROM HRFoundation.HRFoundation_PS.dbo.OA_Base_PublicCode

SELECT StaffID
,EngName
,ChnName
,StaffTypeID
,Status
,StaffPropertyID
,DepartmentID
,PostID
,InauguralDate
,BeFormalDate
,DimissionDate
,CadrePropertyLevelID
,EnableCadrePropertyLevelID
,WorkPlace
,ContractCompanyID
,MobilePhoneNumber
,BranchPhoneNumber
,RecruitSourceID
INTO #TEMP_StaffWorkInfo
FROM HRFoundation.HRFoundation_PS.dbo.StaffWorkInfo sw

SELECT PostID
,Postname
,PostPropertyID INTO #TEMP_Post
FROM HRFoundation.HRFoundation_PS.dbo.Post

SELECT * INTO #TEMP_Staff_Position
FROM HRFoundation.HRFoundation_PS.dbo.Staff_Position
WHERE EnableFlag = 1 AND IsCur = 1 AND TypeID = 2

SELECT * INTO #TEMP_Staff_CareerPass
FROM HRFoundation.HRFoundation_PS.dbo.Staff_CareerPass
WHERE EnableFlag = 1 AND IsCur = 1 AND TypeID = 2

SELECT * INTO #TEMP_Base_Clan
FROM HRFoundation.HRFoundation_PS.dbo.Base_Clan

SELECT * INTO #TEMP_Base_Genus
FROM HRFoundation.HRFoundation_PS.dbo.Base_Genus

SELECT StaffID
,PositionInt
,PositionName
,LevelInt
,LevelName
,EnableFlag
,IsCur
INTO #TEMP_OA_HM_ManagerInfo
FROM HRFoundation.HRFoundation_PS.dbo.OA_HM_ManagerInfo_New
WHERE EnableFlag = 1 AND IsCur = 1

SELECT
StaffID,
ContractEmail,
HighDegreeID,
ExigencyMan,
ExigencyManPhone,
CASE WHEN (nationalityid IS NULL AND ((nationality IS NULL) OR LEN(LTRIM(RTRIM(nationality)))=0 OR nationality ='1')) THEN 1 ELSE nationalityid END AS nationalityid ,
CASE WHEN (nationality ='1' OR nationality IS NULL OR LEN(LTRIM(RTRIM(nationality)))=0 )THEN '中国' else nationality END AS nationality
INTO #TEMP_StaffBaseInfo
FROM HRFoundation.HRFoundation_PS.dbo.StaffBaseInfo

INSERT INTO Sync_StaffInfo
([StaffID]
,[EngName]
,[ChnName]
,[StaffTypeID]
,[StaffType]
,[StaffStatusID]
,[StaffStatus]
,[StaffPropertyID]
,[StaffProperty]
,[BGID]
,[BGName]
,[DeptID]
,[DeptName]
,[DeptLevel1ID]
,[DeptLevel1Name]
,[DeptLevel2ID]
,[DeptLevel2Name]
,[UnitID]
,[UnitName]
,[UnitFullName]
,[PostID]
,[PostName]
,[PostPropertyID]
,[PostProperty]
,[InauguralDate]
,[BeFormalDate]
,[DimissionDate]
,[PositionSystemID]
,[PositionSystem]
,[ClanID]
,[ClanName]
,[GenusID]
,[GenusName]
,[PositionID]
,[PositionName]
,[CareerPassID]
,[CareerPassName]
,[LevelID]
,[LevelName]
,[SubLevelID]
,[SubLevelName]
,[MngPositionID]
,[MngPositionName]
,[MngLevelID]
,[MngLevelName]
,[CadrePropertyLevelID]
,[CadrePropertyLevelName]
,[EnableCadrePropertyLevel]
,[WorkPlaceID]
,[WorkPlace]
,[ContractCompanyID]
,[ContractCompanyName]
,[Channel]
,[MobilePhoneNumber]
,[BranchPhoneNumber]
,[Email]
,HighDegreeID
,HighDegree
,UrgentMan
,UrgentManPhone
,nationalityid
,nationality
)
SELECT sw.StaffID
,sw.EngName
,sw.ChnName
,sw.StaffTypeID
,dictStaffType.Value StaffType
,sw.Status StaffStatusID
,dictStaffStatus.Value StaffStatus
,sw.StaffPropertyID
,dictStaffProperty.FName StaffPropertyName
,u.BGID
,u.BGName
,u.DeptID
,u.DeptName
,[DeptLevel1ID]
,[DeptLevel1Name]
,[DeptLevel2ID]
,[DeptLevel2Name]
,sw.DepartmentID UnitID
,u.UnitName
,u.UnitFullName
,sw.PostID
,p.Postname
,p.PostPropertyID
,dictPostProperty.Value PostProperty
,sw.InauguralDate
,sw.BeFormalDate
,sw.DimissionDate
,c.SourceID PositionSystemID
,c.SourceName PositionSystemName
,sp.ClanID
,sp.ClanName
,sp.GenusID
,sp.GenusName
,sp.PositionID
,sp.PositionName
,scp.GenusID CareerPassID
,scp.GenusName CareerPassName
,scp.LevelID
,scp.LevelName
,scp.SubLevelID
,scp.SubLevelName
,mi.PositionInt MngPositionID
,mi.PositionName MngPositionName
,mi.LevelInt MngLevelID
,mi.LevelName MngLevelName
,sw.CadrePropertyLevelID
,dictCadreLevel.FName CadrePropertyLevelName
,sw.EnableCadrePropertyLevelID
,sw.WorkPlace WorkPlaceID
,dictWorkPlace.Value WorkPlace
,sw.ContractCompanyID
,dictContractCompany.Value ContractCompanyName
,dictRecruitSource.Value Channel
,sw.MobilePhoneNumber
,sw.BranchPhoneNumber
,sb.ContractEmail Email
,sb.HighDegreeID HighDegreeID
,dictHighDegree.Value HighDegree
,sb.ExigencyMan
,sb.ExigencyManPhone
,sb.nationalityid
,sb.nationality
FROM #TEMP_StaffWorkInfo sw
LEFT JOIN sync_unitinfo u ON sw.DepartmentID = u.UnitID
LEFT JOIN #TEMP_DictionaryItem dictStaffType ON sw.StaffTypeID = dictStaffType.DictionaryItemID AND dictStaffType.DictionaryID = 2
LEFT JOIN #TEMP_DictionaryItem dictStaffStatus ON sw.Status = dictStaffStatus.DictionaryItemID AND dictStaffStatus.DictionaryID = 3
LEFT JOIN #TEMP_OA_Base_PublicCode dictStaffProperty ON dictStaffProperty.BusinessTypeID = '1B7D07C3-B038-4846-A28C-0316A5903164' AND dictStaffProperty.FNumber = sw.StaffPropertyID
LEFT JOIN #TEMP_Post p ON sw.PostID = p.PostID
LEFT JOIN #TEMP_DictionaryItem dictPostProperty ON p.PostPropertyID = dictPostProperty.DictionaryItemID AND dictPostProperty.DictionaryID = 12
LEFT JOIN #TEMP_Staff_Position sp ON sw.StaffID = sp.StaffID AND sp.EnableFlag = 1 AND IsCur = 1 AND TypeID = 2
LEFT JOIN #TEMP_Staff_CareerPass scp ON sw.StaffID = scp.StaffID AND scp.EnableFlag = 1 AND scp.IsCur = 1 AND scp.TypeID = 2
LEFT JOIN #TEMP_Base_Clan c ON sp.ClanID = c.ClanID
LEFT JOIN #TEMP_OA_HM_ManagerInfo mi ON sw.StaffID = mi.StaffID AND mi.EnableFlag = 1 AND mi.IsCur = 1
LEFT JOIN #TEMP_OA_Base_PublicCode dictCadreLevel ON dictCadreLevel.BusinessTypeID = '6D6B4B7B-0565-4A5C-BAA6-E2DEC0F6298B' AND sw.CadrePropertyLevelID = dictCadreLevel.FNumber
LEFT JOIN #TEMP_DictionaryItem dictWorkPlace ON dictWorkPlace.DictionaryID = 14 AND dictWorkPlace.DictionaryItemID = sw.WorkPlace
LEFT JOIN #TEMP_DictionaryItem dictContractCompany ON dictContractCompany.DictionaryID = 21 AND dictContractCompany.DictionaryItemID = sw.ContractCompanyID
LEFT JOIN #TEMP_DictionaryItem dictRecruitSource ON dictRecruitSource.DictionaryID = 4 AND dictRecruitSource.DictionaryItemID = sw.RecruitSourceID
LEFT JOIN #TEMP_StaffBaseInfo sb ON sw.StaffID = sb.StaffID
LEFT JOIN #TEMP_DictionaryItem dictHighDegree ON dictHighDegree.DictionaryID = 1 AND dictHighDegree.DictionaryItemID = sb.HighDegreeID

update Sync_StaffInfo set StaffCode=right('00000000' + cast(staffid as varchar), 8)

DROP TABLE #TEMP_DictionaryItem
DROP TABLE #TEMP_OA_Base_PublicCode
DROP TABLE #TEMP_StaffWorkInfo
DROP TABLE #TEMP_Post
DROP TABLE #TEMP_Staff_Position
DROP TABLE #TEMP_Staff_CareerPass
DROP TABLE #TEMP_Base_Clan
DROP TABLE #TEMP_Base_Genus
DROP TABLE #TEMP_OA_HM_ManagerInfo
DROP TABLE #TEMP_StaffBaseInfo

commit tran

END

原文地址:https://www.cnblogs.com/zhangyonglvdaomei/p/4312509.html