if the xml gets a little big, then the proc gets very slow.. could it be the server resource of the code of the proc?
Microsoft SQL ServerMicrosoft SQL Server 2005Microsoft SQL Server 2008
Last Comment
Saurabh Bhadauria
8/22/2022 - Mon
25112
ASKER
the code is
/****************************************************************************** Â
Input    : @pFileName Â
       @pXmlExaminees Â
       @pAuditUserName Â
---------------------------------------------------------------------------- Â
Sample Call Syntax Using Variables: Â
exec dbo.proc_BchSingleXMLExamineeUpload @pFileName, @pXmlExaminees, @pAuditUserName Â
******************************************************************************/ Â
CREATE Â Â Â PROCEDURE [dbo].[proc_BchSingleXMLExamineeUpload] Â
 @pFileName varchar(25), Â
 @pXmlExaminees text, Â
 @pAuditUserName varchar(24) Â
AS Â
BEGIN Â
Â
 DECLARE @TempTestCenterFK as varchar(20) Â
 Â
 ----------------Import into @tmpExaminee---------------- Â
 DECLARE @tmpExaminee TABLE Â
 ( Â
 [Seq] [smallint] , Â
 [InfoDt] [varchar] (15) NULL , Â
 [ExID] [varchar] (50) NULL , Â
 [LNm] [varchar] (50) NULL , Â
 [FNm] [varchar] (50) NULL , Â
 [MI] [char] (1) NULL , Â
 [Sfx] [char] (10) NULL , Â
 [IDType] [varchar] (10) NULL , Â
 [IDNum] [varchar] (15) NULL , Â
 [DOB] [varchar] (15) NULL , Â
 [EthCd] [varchar] (10) NULL , Â
 [PrLan] [varchar] (10) NULL , Â
 [GenCd] [varchar] (10) NULL , Â
 [MilCd] [varchar] (10) NULL , Â
 [StAdd] [varchar] (100) NULL , Â
 [City] [varchar] (50) NULL , Â
 [StCd] [varchar] (5) NULL , Â
 [ZipCd] [varchar] (10) NULL , Â
 [SubJIDCd] [varchar] (5) NULL , Â
 [EdLvl] [varchar] (10) NULL , Â
 [LastYr] [varchar] (10) NULL , Â
 [PTest] [char] (1) NULL , Â
 [SU01] [char] (1) NULL , Â
 [SU02] [char] (1) NULL , Â
 [TCCd] [varchar] (20) NULL , Â
 [ICCd] [varchar] (10) NULL , Â
 [CredStat] [char] (1) NULL , Â
 [CredDt] [varchar] (15) NULL, Â
 [TestCenterFK] [varchar] (20) NULL Â
 ) Â
 Â
 DECLARE @hdoc INT Â
 EXEC sp_xml_preparedocument @hdoc OUTPUT, @pXmlExaminees Â
 Â
 INSERT INTO @tmpExaminee Â
 ( Â
 Seq, Â
 InfoDt, Â
 ExID, Â
 LNm, Â
 FNm, Â
 MI, Â
 Sfx, Â
 IDType, Â
 IDNum, Â
 DOB, Â
 EthCd, Â
 PrLan, Â
 GenCd, Â
 MilCd, Â
 StAdd, Â
 City, Â
 StCd, Â
 ZipCd, Â
 SubJIDCd, Â
 EdLvl, Â
 LastYr, Â
 PTest, Â
 SU01, Â
 SU02, Â
 TCCd, Â
 ICCd, Â
 CredStat, Â
 CredDt Â
 ) Â
 (SELECT Â
 Seq, Â
 InfoDt, Â
 ExID, Â
 UPPER(RTRIM(LNm)), Â
 UPPER(RTRIM(FNm)), Â
 UPPER(RTRIM(MI)), Â
 UPPER(RTRIM(Sfx)), Â
 IDType, Â
 Right(IDNum,9),  Â
 DOB, Â
 EthCd, Â
 PrLan, Â
 GenCd, Â
 MilCd, Â
 UPPER(RTRIM(StAdd)), Â
 UPPER(RTRIM(City)), Â
 UPPER(RTRIM(StCd)), Â
 left(ZipCd,5), Â
 SubJIDCd, Â
 EdLvl, Â
 LastYr, Â
 PTest, Â
 SU01, Â
 SU02, Â
 TCCd, Â
 ICCd, Â
 CredStat, Â
 CredDt Â
 FROM OPENXML(@hdoc,'/Root/Demo') WITH ( Â
 Seq [smallint] 'Seq', Â
 InfoDt [varchar] (15) 'InfoDt', Â
 ExID [varchar] (50) 'ExID', Â
 LNm [varchar] (50) 'LNm', Â
 FNm [varchar] (50) 'FNm', Â
 MI [char] (1) 'MI', Â
 Sfx [char] (10) 'Sfx', Â
 IDType [varchar] (10) 'IDType', Â
 IDNum [varchar] (15) 'IDNum', Â
 DOB [varchar] (15) 'DOB', Â
 EthCd [varchar] (10) 'EthCd', Â
 PrLan [varchar] (10) 'PrLan', Â
 GenCd [varchar] (10) 'GenCd', Â
 MilCd [varchar] (10) 'MilCd', Â
 StAdd [varchar] (100) 'StAdd', Â
 City [varchar] (50) 'City', Â
 StCd [varchar] (5) 'StCd', Â
 ZipCd [varchar] (10) 'ZipCd', Â
 SubJIDCd [varchar] (5) 'SubJIDCd', Â
 EdLvl [char] (10) 'EdLvl', Â
 LastYr [varchar] (10) 'LastYr', Â
 PTest [char] (1) 'PTest', Â
 SU01 [char] (1) 'SU01', Â
 SU02 [char] (1) 'SU02', Â
 TCCd [varchar] (20) 'TCCd', Â
 ICCd [varchar] (10) 'ICCd', Â
 CredStat [char] (1) 'CredStat', Â
 CredDt [varchar] (15) 'CredDt') Â
 ) Â
 Â
 ------------------------------------------ Â
 UPDATE  @tmpExaminee Â
 SET TestCenterFK = TestCenterPK Â
 FROM  tblTestCenter AS TC Â
 WHERE TC.TestCenterNumber = Â
 CASE Â
  When SUBSTRING(ExID, 1, 3) = 'PPB' Then Â
  SUBSTRING(TCCd, LEN(TCCd)-3, 4)  Â
  ELSE Â
  SUBSTRING(TCCd, LEN(TCCd)-5, 4) Â
  END Â
 Â
 UPDATE  @tmpExaminee Â
 SET TestCenterFK = 'OSS' + Â
 CASE Â
  When SUBSTRING(ExID, 1, 3) = 'PPB' Then Â
  TCCd -- Pearson VUE Â
  ELSE Â
  SUBSTRING(TCCd, 1, LEN(TCCd)-2)
  END Â
 WHERE TestCenterFK IS NULL Â
 ---------------------------------------------- Â
 DECLARE @tmpTestScore TABLE  Â
 ( Â
 [Seq] [smallint] NULL, Â
 [ExID] [varchar] (50)  NULL , Â
 [TestDt] [varchar] (15)  NULL , Â
 [TestNbr] [varchar] (10)  NULL , Â
 [TCcd] [varchar] (20) NULL , Â
 [Fmt] [varchar] (10)  NULL , Â
 [Frm] [varchar] (10)  NULL , Â
 [Lan] [varchar] (10) NULL , Â
 [Std] [varchar] (10)  NULL , Â
 [Rnk] [varchar] (10)  NULL , Â
 [FErr] [varchar] (10)  NULL , Â
 [AErr] [varchar] (10)  NULL , Â
 [MErr] [varchar] (10)  NULL , Â
 [QErr] [varchar] (10)  NULL , Â
 [StageTestFK] [int] NULL , Â
 [TestFormFK] [varchar] (20) NULL , Â
 [TestCenterFK] [varchar] (20) NULL , Â
 [StageExamineeFK] [int] NULL Â
 ) Â
 Â
 INSERT INTO @tmpTestScore Â
 ( Â
 Seq, Â
 ExID, Â
 TestDt, Â
 TestNbr, Â
 TCCd, Â
 Fmt, Â
 Frm, Â
 Lan, Â
 Std, Â
 Rnk, Â
 FErr, Â
 AErr, Â
 MErr, Â
 QErr Â
 ) Â
 (SELECT Â
 Seq, Â
 ExID, Â
 TestDt, Â
 TestNbr, Â
 TCCd, Â
 Fmt, Â
 Frm, Â
 Lan, Â
 Std, Â
 Rnk, Â
 FErr, Â
 AErr, Â
 MErr, Â
 QErr Â
 FROM OPENXML(@hdoc,'/Root/Test') WITH (  Â
 Seq [smallint] 'Seq', Â
 ExID [varchar] (50)  'ExID' , Â
 TestDt [varchar] (15)  'TestDt' , Â
 TestNbr [varchar] (10)  'TestNbr' , Â
 TCCd [varchar] (20)  'TCCd' , Â
 Fmt [varchar] (10)  'Fmt' , Â
 Frm [varchar] (10)  'Frm' , Â
 Lan [varchar] (10)  'Lan' , Â
 Std [varchar] (10)  'Std' , Â
 Rnk [varchar] (10)  'Rnk', Â
 FErr [varchar] (10)  'FErr', Â
 AErr [varchar] (10)  'AErr', Â
 MErr [varchar] (10)  'MErr', Â
 QErr [varchar] (10)  'MErr') Â
 Â
 ) Â
 Â
 UPDATE  @tmpTestScore Â
 SET TestCenterFK = TestCenterPK, @TempTestCenterFK = TestCenterPK Â
 FROM  tblTestCenter AS TC Â
 WHERE TC.TestCenterNumber = Â
 CASE Â
  When SUBSTRING(ExID, 1, 3) = 'PPB' Then Â
  SUBSTRING(TCCd, LEN(TCCd)-3, 4)
  ELSE Â
  SUBSTRING(TCCd, LEN(TCCd)-5, 4) Â
  END Â
 Â
 UPDATE  @tmpTestScore Â
 SET TestCenterFK = 'OSS' + Â
 CASE Â
  When SUBSTRING(ExID, 1, 3) = 'PPB' Then Â
  TCCd Â
  ELSE Â
  SUBSTRING(TCCd, 1, LEN(TCCd)-2) Â
  END Â
 WHERE TestCenterFK IS NULL Â
 Â
 UPDATE  @tmpTestScore Â
 SET @TempTestCenterFK = 'OSS' + Â
 CASE Â
  When SUBSTRING(ExID, 1, 3) = 'PPB' Then
  TCCd Â
  ELSE Â
  SUBSTRING(TCCd, 1, LEN(TCCd)-2) Â
  END Â
 WHERE TestCenterFK IS NULL Â
 Â
 Â
 Â
 UPDATE @tmpTestScore Â
 SET TestFormFK = Â
 CASE dbo.udf_GetTestFormPK(Fmt, Frm, SUBSTRING(TestDt,1,4)) Â
  WHEN 0 THEN 'OSS' + Fmt + '~' + Frm + '~' + SUBSTRING(TestDt,1,4) Â
  ELSE CONVERT(VARCHAR(20),dbo.udf_GetTestFormPK(Fmt, Frm, SUBSTRING(TestDt,1,4))) Â
 END Â
 Â
 Â
 UPDATE @tmpTestScore Â
 SET Lan = Â
 CASE Lan Â
  WHEN '1' THEN '1' Â
  WHEN '6' THEN '1' Â
  WHEN '7' THEN '1' Â
  WHEN '3' THEN '3' Â
  WHEN '4' THEN '2' Â
  WHEN '5' THEN '1' Â
  WHEN '17' THEN '1' Â
  WHEN '19' THEN '3' Â
  WHEN '20' THEN '2' Â
  ELSE 'OSS' + Lan Â
 END Â
 --------------------------------------- Â
 DECLARE @maxHandle AS INT Â
 SELECT @maxHandle = MAX(SEQ) FROM @tmpExaminee Â
 DECLARE @handle AS INT Â
 SET @handle = 1 Â
 DECLARE @ExID AS VARCHAR(50) Â
 Â
 WHILE (@handle <= @maxHandle) Â
 BEGIN Â
 SELECT @ExID = ExID FROM @tmpExaminee WHERE Seq = @handle Â
 DECLARE @ExamineeExists AS BIT Â
 SELECT @ExamineeExists=COUNT(*) FROM tblStageExaminee WHERE ExamineeID=@ExID Â
 Â
 IF(@ExamineeExists>0) Â
  UPDATE tblStageExaminee Â
  SET  PPBID = IDNum, Â
  PPBIDTypeFK = IDType, Â
  FirstName = FNm, Â
  MiddleInitial = MI, Â
  LastName = LNm, Â
  NameSuffix = Sfx, Â
  AddressLine1 = StAdd, Â
  City = tE.City, Â
  State = StCd, Â
  ZipCode = SUBSTRING(ZipCd,1,5), Â
  ZipCodeExtn = Â
   CASE Â
   WHEN LEN(ZipCd) > 5 THEN REPLACE(SUBSTRING(ZipCd, 6, LEN(ZipCd)), '-','') Â
   ELSE NULL Â
   END, Â
  EdNA_CountyFK = SubJIDCd, Â
  PrimaryLanguage = PrLan, Â
  DateofBirth = DOB, Â
  Gender = GenCd, Â
  PPBEthnicCodeFK = EthCd, Â
  HighestGradeCompleted = EdLvl, Â
  WithdrawalYear = LastYr, Â
  PAResidencyInd = Â
   CASE SU01 Â
   WHEN 'N' THEN 0 Â
   ELSE 1 Â
   END, Â
  SDIssuedDiplomaInd = Â
   CASE SU02 Â
   WHEN 'Y' THEN 1 Â
   ELSE  0 Â
   END, Â
  PracticeTestInd = PTest, Â
  CredStatusInd = CredStat, Â
  CredStatusDate = CredDt, Â
  InstructionalCenterCode = ICCd, Â
  StageExamineeRecordStatusFK = 1, Â
  ByPassInd = 0,  Â
  TestCenterFK = @TempTestCenterFK, Â
  MilitaryExamineeInd = MilCd, Â
  AuditChanPPBate = GETDATE(), Â
  AuditChangeUserName = @pAuditUserName Â
  FROM @tmpExaminee AS tE Â
  WHERE  Seq = @handle AND Â
  ExamineeID = @ExID
 ELSE Â
  INSERT INTO tblStageExaminee( Â
  ExamineeID, Â
  PPBID, Â
  PPBIDTypeFK, Â
  FirstName, Â
  MiddleInitial, Â
  LastName, Â
  NameSuffix, Â
  AddressLine1, Â
  City, Â
  State, Â
  ZipCode, Â
  ZipCodeExtn, Â
  EdNA_CountyFK, Â
  PrimaryLanguage, Â
  DateofBirth, Â
  Gender, Â
  PPBEthnicCodeFK, Â
  HighestGradeCompleted, Â
  WithdrawalYear, Â
  PAResidencyInd, Â
  SDIssuedDiplomaInd, Â
  PracticeTestInd, Â
  CredStatusInd, Â
  CredStatusDate, Â
  InstructionalCenterCode, Â
  StageExamineeRecordStatusFK, Â
  ByPassInd, Â
  TestCenterFK, Â
  MilitaryExamineeInd, Â
  AuditAddDate, Â
  AuditAddUserName, Â
  AuditChanPPBate, Â
  AuditChangeUserName) Â
  (SELECT Â
  ExID, Â
  IDNum, Â
  IDType, Â
  FNm, Â
  MI, Â
  LNm, Â
  Sfx, Â
  StAdd, Â
  City, Â
  StCd, Â
  SUBSTRING(ZipCd,1,5), Â
  CASE Â
   WHEN LEN(ZipCd) > 5 THEN REPLACE(SUBSTRING(ZipCd, 6, LEN(ZipCd)), '-','') Â
   ELSE NULL Â
  END, Â
  SubJIDCd, Â
  PrLan, Â
  DOB, Â
  GenCd, Â
  EthCd, Â
  EdLvl, Â
  LastYr, Â
  CASE SU01 Â
   WHEN 'N' THEN 0 Â
   ELSE 1 Â
  END, Â
  CASE SU02 Â
   WHEN 'Y' THEN 1 Â
   ELSE 0 Â
  END, Â
  PTest,   Â
  CredStat, Â
  CredDt, Â
  ICCd, Â
  1, Â
  0, Â
  @TempTestCenterFK, Â
  MilCd, Â
  GETDATE(), Â
  @pAuditUserName, Â
  GETDATE(), Â
  @pAuditUserName Â
  FROM @tmpExaminee AS tE Â
  WHERE  Seq = @handle Â
  ) Â
 Â
 DECLARE @StageExamineePK AS INT Â
 SELECT @StageExamineePK = StageExamineePK Â
 FROM tblStageExaminee Â
 WHERE ExamineeID=@ExID Â
 Â
 ----------------Import into tblStageTest---------------- Â
 UPDATE @tmpTestScore Â
 SET StageExamineeFK = SE.StageExamineePK Â
 FROM tblStageExaminee AS SE Â
 WHERE Seq = @handle AND Â
  ExamineeID = @ExID Â
 Â
 INSERT INTO tblStageTest( Â
  StageExamineeFK, Â
  TestCenterFK, Â
  TestDate, Â
  AuditAddDate, Â
  AuditAddUserName, Â
  AuditChanPPBate, Â
  AuditChangeUserName) Â
 (SELECT DISTINCT Â
  StageExamineeFK, Â
  tTS.TestCenterFK, Â
  TestDt, Â
  GETDATE(), Â
  @pAuditUserName, Â
  GETDATE(), Â
  @pAuditUserName Â
 FROM @tmpTestScore AS tTS Â
 WHERE Seq = @handle AND Â
  CONVERT(VARCHAR(10),tTS.StageExamineeFK) + '~' + tTS.TestDt + '~' + tTS.TestCenterFK NOT IN Â
  (SELECT CONVERT(VARCHAR(10),StageExamineeFK) + '~' + TestDate + '~' + TestCenterFK FROM tblStageTest) Â
 ) Â
 Â
 Â
 UPDATE tblStageExaminee Â
  SET  ByPassInd = 1 Â
 WHERE StageExamineePK not in (Select distinct StageExamineeFK from tblStageTest) Â
 Â
 DECLARE @count Int Â
 SELECT @count = count(*)  from tblStageExaminee where StageExamineePK = @StageExamineePK and ByPassInd = 1 Â
 IF (@count > 0) Â
 BEGIN Â
  EXEC sp_xml_removedocument @hdoc Â
  RETURN Â
 END Â
Â
 UPDATE @tmpTestScore Â
 SET StageTestFK = ST.StageTestPK Â
 FROM @tmpTestScore AS tTS Â
 INNER JOIN tblStageTest AS ST ON Â
  tTS.StageExamineeFK = ST.StageExamineeFK AND Â
  tTS.TestDt = ST.TestDate AND Â
  tTS.TestcenterFK = ST.TestcenterFK Â
 WHERE Seq = @handle Â
 Â
 ----------------Import into tblStageTestScore---------------- Â
 UPDATE  tblStageTestScore Â
 SET TestFormFK = tTS.TestFormFK, Â
  TestLanguageFK = Lan, Â
  SubjectScore = Std, Â
  ScorePercent = Rnk, Â
  InvalidTestForm = FErr, Â
  InvalidAge = AErr, Â
  MaxRetestError =MErr, Â
  QuestionableActivity = QErr, Â
  AuditChanPPBate = GETDATE(), Â
  AuditChangeUserName = @pAuditUserName Â
 FROM @tmpTestScore tTS Â
 WHERE Seq = @handle AND Â
  tTS.StageTestFK = tblStageTestScore.StageTestFK AND Â
  tTS.TestNbr = CONVERT(VARCHAR(10),TestSubjectFK) Â
 Â
 INSERT INTO tblStageTestScore( Â
  StageTestFK, Â
  TestFormFK, Â
  TestSubjectFK, Â
  TestLanguageFK, Â
  SubjectScore, Â
  ScorePercent, Â
  InvalidTestForm, Â
  InvalidAge, Â
  MaxRetestError, Â
  QuestionableActivity, Â
  AuditAddDate, Â
  AuditAddUserName, Â
  AuditChanPPBate, Â
  AuditChangeUserName) Â
 (SELECT Â
  StageTestFK, Â
  TestFormFK, Â
  TestNbr, Â
  Lan, Â
  Std, Â
  Rnk, Â
  FErr, Â
  AErr, Â
  MErr, Â
  QErr, Â
  GETDATE(), Â
  @pAuditUserName, Â
  GETDATE(), Â
  @pAuditUserName Â
 FROM @tmpTestScore tTS Â
 WHERE Seq = @handle AND Â
  CONVERT(VARCHAR(10),tTS.StageTestFK) + '~' + tTS.TestNbr NOT IN Â
  (SELECT CONVERT(VARCHAR(10),StageTestFK) + '~' + CONVERT(VARCHAR(10),TestSubjectFK) FROM tblStageTestScore) Â
 ) Â
 Â
 Â
 Â
 INSERT INTO tblStageExamineeReason Â
 ( Â
  StageExamineeFK, Â
  TestReasonFK, Â
  AuditAddDate, Â
  AuditAddUserName Â
 ) Â
 ( Â
 SELECT Â
  SE.StageExamineePK, Â
  RFT, Â
  GETDATE(), Â
  @pAuditUserName Â
 FROM OPENXML(@hdoc,'/Root/Reason') WITH ( Â
  Seq [smallint] 'Seq' , Â
  ExID [varchar] (50)  'ExID' , Â
  RFT [varchar] (5)  'RFT') AS XR Â
 INNER JOIN tblStageExaminee AS SE ON Â
  XR.ExID = SE.ExamineeID Â
 WHERE  Seq = @handle AND Â
  CONVERT(VARCHAR(10),StageExamineePK) + '~' + RFT NOT IN Â
  (SELECT CONVERT(VARCHAR(10),StageExamineeFK) + '~' + CONVERT(VARCHAR(5),TestReasonFK) FROM tblStageExamineeReason) Â
 ) Â
 SET @handle = @handle + 1 Â
 END Â
 Â
 EXEC sp_xml_removedocument @hdoc Â
 Â
 EXEC proc_BchBatchProcessStageExaminee @StageExamineePK, @pFileName, @pAuditUserName Â
END
Saurabh, appreciate your input..
1) in the following example, you would say table variable is OK.. (small size).. but in general, i will follow your advice to make it into a temp table. what is the cut off you keep (100 records, 200 records etc).
2)OK.. i will change  open_xml to be used only once..
3)i am not understanding the loop/while idea.. can you give a small example? thanks.
here is an actual small parameter.
exec proc_BchSingleXMLExamineeUpload @pFileName = N'CO201209272359.xml', @pXmlExaminees = '<Root>
 <Demo>
  <Seq>20</Seq>
  <InfoDt>20101016</InfoDt>
  <ExID>1202728976</ExID>
  <LNm>P</LNm>
  <FNm>John</FNm>
  <MI>O</MI>
  <Sfx>      </Sfx>
  <IDType>1</IDType>
  <IDNum>202728976</IDNum>
  <DOB>19000101</DOB>
  <EthCd>4</EthCd>
  <PrLan>1</PrLan>
  <GenCd>1</GenCd>
  <MilCd>2</MilCd>
  <StAdd>Some Address</StAdd>
  <City>Some City</City>
  <StCd>??</StCd>
  <ZipCd>12345</ZipCd>
  <SubJIDCd>039</SubJIDCd>
  <EdLvl>7     </EdLvl>
  <LastYr>2007</LastYr>
  <PTest>2</PTest>
  <SU01>Y</SU01>
  <SU02>N</SU02>
  <TCCd>300041040005</TCCd>
  <ICCd />
  <CredStat>0</CredStat>
  <CredDt />
 </Demo>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041040005</TCCd>
  <TestDt>20120926</TestDt>
  <TestNbr>1</TestNbr>
  <Fmt>1</Fmt>
  <Frm>10</Frm>
  <Std>400</Std>
  <Rnk>16</Rnk>
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041048000</TCCd>
  <TestDt>20101211</TestDt>
  <TestNbr>2</TestNbr>
  <Fmt>1</Fmt>
  <Frm>8</Frm>
  <Std>430</Std>
  <Rnk>24</Rnk>
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041040005</TCCd>
  <TestDt>20120612</TestDt>
  <TestNbr>3</TestNbr>
  <Fmt>1</Fmt>
  <Frm>7</Frm>
  <Std>480</Std>
  <Rnk>42</Rnk>
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041040005</TCCd>
  <TestDt>20120612</TestDt>
  <TestNbr>4</TestNbr>
  <Fmt>1</Fmt>
  <Frm>7</Frm>
  <Std>450</Std>
  <Rnk>31</Rnk>
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041040005</TCCd>
  <TestDt>20120612</TestDt>
  <TestNbr>5</TestNbr>
  <Fmt>1</Fmt>
  <Frm>7</Frm>
  <Std>450</Std>
  <Rnk>31</Rnk>
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041040005</TCCd>
  <TestDt>20120612</TestDt>
  <TestNbr>1</TestNbr>
  <Fmt>1</Fmt>
  <Frm>7</Frm>
  <Std>380</Std>
  <Rnk>12</Rnk>
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041040005</TCCd>
  <TestDt>20120612</TestDt>
  <TestNbr>2</TestNbr>
  <Fmt>1</Fmt>
  <Frm>7</Frm>
  <Std>410</Std>
  <Rnk>18</Rnk>
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041048000</TCCd>
  <TestDt>20101113</TestDt>
  <TestNbr>3</TestNbr>
  <Fmt>1</Fmt>
  <Frm>2</Frm>
  <Std>440</Std>
  <Rnk>27</Rnk>
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041048000</TCCd>
  <TestDt>20101016</TestDt>
  <TestNbr>4</TestNbr>
  <Fmt>1</Fmt>
  <Frm>7</Frm>
  <Std>440</Std>
  <Rnk>27</Rnk>
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041048000</TCCd>
  <TestDt>20101113</TestDt>
  <TestNbr>5</TestNbr>
  <Fmt>1</Fmt>
  <Frm>2</Frm>
  <Std>450</Std>
  <Rnk>31</Rnk>
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041048000</TCCd>
  <TestDt>20110205</TestDt>
  <TestNbr>1</TestNbr>
  <Fmt>1</Fmt>
  <Frm>5</Frm>
  <Std>380</Std>
  <Rnk>12</Rnk>
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041048000</TCCd>
  <TestDt>20101016</TestDt>
  <TestNbr>2</TestNbr>
  <Fmt>1</Fmt>
  <Frm>7</Frm>
  <Std>410</Std>
  <Rnk>18</Rnk>
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041048000</TCCd>
  <TestDt>20110409</TestDt>
  <TestNbr>3</TestNbr>
  <Fmt>1</Fmt>
  <Frm>3</Frm>
  <Std>430</Std>
  <Rnk>24</Rnk>
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041040005</TCCd>
  <TestDt>20120919</TestDt>
  <TestNbr>4</TestNbr>
  <Fmt>1</Fmt>
  <Frm>10</Frm>
  <Std>430</Std>
  <Rnk>24</Rnk>
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041048000</TCCd>
  <TestDt>20101016</TestDt>
  <TestNbr>5</TestNbr>
  <Fmt>1</Fmt>
  <Frm>7</Frm>
  <Std>330</Std>
  <Rnk>4</Rnk>
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041048000</TCCd>
  <TestDt>20110409</TestDt>
  <TestNbr>1</TestNbr>
  <Fmt>1</Fmt>
  <Frm>3</Frm>
  <Std>370</Std>
  <Rnk>10</Rnk>
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041040005</TCCd>
  <TestDt>20120919</TestDt>
  <TestNbr>2</TestNbr>
  <Fmt>1</Fmt>
  <Frm>10</Frm>
  <Std>390</Std>
  <Rnk>14</Rnk>
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041048000</TCCd>
  <TestDt>20101016</TestDt>
  <TestNbr>3</TestNbr>
  <Fmt>1</Fmt>
  <Frm>7</Frm>
  <Std>360</Std>
  <Rnk>8</Rnk>
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041048000</TCCd>
  <TestDt>20110205</TestDt>
  <TestNbr>4</TestNbr>
  <Fmt>1</Fmt>
  <Frm>5</Frm>
  <Std>420</Std>
  <Rnk>21</Rnk>
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041048000</TCCd>
  <TestDt>20101211</TestDt>
  <TestNbr>1</TestNbr>
  <Fmt>1</Fmt>
  <Frm>8</Frm>
  <Std>0</Std>
  <Rnk />
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041048000</TCCd>
  <TestDt>20101113</TestDt>
  <TestNbr>1</TestNbr>
  <Fmt>1</Fmt>
  <Frm>2</Frm>
  <Std>0</Std>
  <Rnk />
  <FErr />
 </Test>
 <Test>
  <Seq>20</Seq>
  <Lan>1</Lan>
  <ExID>1202728976</ExID>
  <TCCd>300041048000</TCCd>
  <TestDt>20101016</TestDt>
  <TestNbr>1</TestNbr>
  <Fmt>1</Fmt>
  <Frm>7</Frm>
  <Std>0</Std>
  <Rnk />
  <FErr />
 </Test>
 <Reason>
  <Seq>20</Seq>
  <ExID>1202728976</ExID>
  <RFT>13</RFT>
 </Reason>
</Root>', @pAuditUserName = N'SRBBO\magros'
/*************************
Input    : @pFileName Â
       @pXmlExaminees Â
       @pAuditUserName Â
--------------------------
Sample Call Syntax Using Variables: Â
exec dbo.proc_BchSingleXMLExami
**************************
CREATE Â Â Â PROCEDURE [dbo].[proc_BchSingleXMLEx
 @pFileName varchar(25), Â
 @pXmlExaminees text, Â
 @pAuditUserName varchar(24) Â
AS Â
BEGIN Â
Â
 DECLARE @TempTestCenterFK as varchar(20) Â
 Â
 ----------------Import into @tmpExaminee--------------
 DECLARE @tmpExaminee TABLE Â
 ( Â
 [Seq] [smallint] , Â
 [InfoDt] [varchar] (15) NULL , Â
 [ExID] [varchar] (50) NULL , Â
 [LNm] [varchar] (50) NULL , Â
 [FNm] [varchar] (50) NULL , Â
 [MI] [char] (1) NULL , Â
 [Sfx] [char] (10) NULL , Â
 [IDType] [varchar] (10) NULL , Â
 [IDNum] [varchar] (15) NULL , Â
 [DOB] [varchar] (15) NULL , Â
 [EthCd] [varchar] (10) NULL , Â
 [PrLan] [varchar] (10) NULL , Â
 [GenCd] [varchar] (10) NULL , Â
 [MilCd] [varchar] (10) NULL , Â
 [StAdd] [varchar] (100) NULL , Â
 [City] [varchar] (50) NULL , Â
 [StCd] [varchar] (5) NULL , Â
 [ZipCd] [varchar] (10) NULL , Â
 [SubJIDCd] [varchar] (5) NULL , Â
 [EdLvl] [varchar] (10) NULL , Â
 [LastYr] [varchar] (10) NULL , Â
 [PTest] [char] (1) NULL , Â
 [SU01] [char] (1) NULL , Â
 [SU02] [char] (1) NULL , Â
 [TCCd] [varchar] (20) NULL , Â
 [ICCd] [varchar] (10) NULL , Â
 [CredStat] [char] (1) NULL , Â
 [CredDt] [varchar] (15) NULL, Â
 [TestCenterFK] [varchar] (20) NULL Â
 ) Â
 Â
 DECLARE @hdoc INT Â
 EXEC sp_xml_preparedocument @hdoc OUTPUT, @pXmlExaminees Â
 Â
 INSERT INTO @tmpExaminee Â
 ( Â
 Seq, Â
 InfoDt, Â
 ExID, Â
 LNm, Â
 FNm, Â
 MI, Â
 Sfx, Â
 IDType, Â
 IDNum, Â
 DOB, Â
 EthCd, Â
 PrLan, Â
 GenCd, Â
 MilCd, Â
 StAdd, Â
 City, Â
 StCd, Â
 ZipCd, Â
 SubJIDCd, Â
 EdLvl, Â
 LastYr, Â
 PTest, Â
 SU01, Â
 SU02, Â
 TCCd, Â
 ICCd, Â
 CredStat, Â
 CredDt Â
 ) Â
 (SELECT Â
 Seq, Â
 InfoDt, Â
 ExID, Â
 UPPER(RTRIM(LNm)), Â
 UPPER(RTRIM(FNm)), Â
 UPPER(RTRIM(MI)), Â
 UPPER(RTRIM(Sfx)), Â
 IDType, Â
 Right(IDNum,9),  Â
 DOB, Â
 EthCd, Â
 PrLan, Â
 GenCd, Â
 MilCd, Â
 UPPER(RTRIM(StAdd)), Â
 UPPER(RTRIM(City)), Â
 UPPER(RTRIM(StCd)), Â
 left(ZipCd,5), Â
 SubJIDCd, Â
 EdLvl, Â
 LastYr, Â
 PTest, Â
 SU01, Â
 SU02, Â
 TCCd, Â
 ICCd, Â
 CredStat, Â
 CredDt Â
 FROM OPENXML(@hdoc,'/Root/Demo'
 Seq [smallint] 'Seq', Â
 InfoDt [varchar] (15) 'InfoDt', Â
 ExID [varchar] (50) 'ExID', Â
 LNm [varchar] (50) 'LNm', Â
 FNm [varchar] (50) 'FNm', Â
 MI [char] (1) 'MI', Â
 Sfx [char] (10) 'Sfx', Â
 IDType [varchar] (10) 'IDType', Â
 IDNum [varchar] (15) 'IDNum', Â
 DOB [varchar] (15) 'DOB', Â
 EthCd [varchar] (10) 'EthCd', Â
 PrLan [varchar] (10) 'PrLan', Â
 GenCd [varchar] (10) 'GenCd', Â
 MilCd [varchar] (10) 'MilCd', Â
 StAdd [varchar] (100) 'StAdd', Â
 City [varchar] (50) 'City', Â
 StCd [varchar] (5) 'StCd', Â
 ZipCd [varchar] (10) 'ZipCd', Â
 SubJIDCd [varchar] (5) 'SubJIDCd', Â
 EdLvl [char] (10) 'EdLvl', Â
 LastYr [varchar] (10) 'LastYr', Â
 PTest [char] (1) 'PTest', Â
 SU01 [char] (1) 'SU01', Â
 SU02 [char] (1) 'SU02', Â
 TCCd [varchar] (20) 'TCCd', Â
 ICCd [varchar] (10) 'ICCd', Â
 CredStat [char] (1) 'CredStat', Â
 CredDt [varchar] (15) 'CredDt') Â
 ) Â
 Â
 --------------------------
 UPDATE  @tmpExaminee Â
 SET TestCenterFK = TestCenterPK Â
 FROM  tblTestCenter AS TC Â
 WHERE TC.TestCenterNumber = Â
 CASE Â
  When SUBSTRING(ExID, 1, 3) = 'PPB' Then Â
  SUBSTRING(TCCd, LEN(TCCd)-3, 4)  Â
  ELSE Â
  SUBSTRING(TCCd, LEN(TCCd)-5, 4) Â
  END Â
 Â
 UPDATE  @tmpExaminee Â
 SET TestCenterFK = 'OSS' + Â
 CASE Â
  When SUBSTRING(ExID, 1, 3) = 'PPB' Then Â
  TCCd -- Pearson VUE Â
  ELSE Â
  SUBSTRING(TCCd, 1, LEN(TCCd)-2)
  END Â
 WHERE TestCenterFK IS NULL Â
 --------------------------
 DECLARE @tmpTestScore TABLE  Â
 ( Â
 [Seq] [smallint] NULL, Â
 [ExID] [varchar] (50)  NULL , Â
 [TestDt] [varchar] (15)  NULL , Â
 [TestNbr] [varchar] (10)  NULL , Â
 [TCcd] [varchar] (20) NULL , Â
 [Fmt] [varchar] (10)  NULL , Â
 [Frm] [varchar] (10)  NULL , Â
 [Lan] [varchar] (10) NULL , Â
 [Std] [varchar] (10)  NULL , Â
 [Rnk] [varchar] (10)  NULL , Â
 [FErr] [varchar] (10)  NULL , Â
 [AErr] [varchar] (10)  NULL , Â
 [MErr] [varchar] (10)  NULL , Â
 [QErr] [varchar] (10)  NULL , Â
 [StageTestFK] [int] NULL , Â
 [TestFormFK] [varchar] (20) NULL , Â
 [TestCenterFK] [varchar] (20) NULL , Â
 [StageExamineeFK] [int] NULL Â
 ) Â
 Â
 INSERT INTO @tmpTestScore Â
 ( Â
 Seq, Â
 ExID, Â
 TestDt, Â
 TestNbr, Â
 TCCd, Â
 Fmt, Â
 Frm, Â
 Lan, Â
 Std, Â
 Rnk, Â
 FErr, Â
 AErr, Â
 MErr, Â
 QErr Â
 ) Â
 (SELECT Â
 Seq, Â
 ExID, Â
 TestDt, Â
 TestNbr, Â
 TCCd, Â
 Fmt, Â
 Frm, Â
 Lan, Â
 Std, Â
 Rnk, Â
 FErr, Â
 AErr, Â
 MErr, Â
 QErr Â
 FROM OPENXML(@hdoc,'/Root/Test'
 Seq [smallint] 'Seq', Â
 ExID [varchar] (50)  'ExID' , Â
 TestDt [varchar] (15)  'TestDt' , Â
 TestNbr [varchar] (10)  'TestNbr' , Â
 TCCd [varchar] (20)  'TCCd' , Â
 Fmt [varchar] (10)  'Fmt' , Â
 Frm [varchar] (10)  'Frm' , Â
 Lan [varchar] (10)  'Lan' , Â
 Std [varchar] (10)  'Std' , Â
 Rnk [varchar] (10)  'Rnk', Â
 FErr [varchar] (10)  'FErr', Â
 AErr [varchar] (10)  'AErr', Â
 MErr [varchar] (10)  'MErr', Â
 QErr [varchar] (10)  'MErr') Â
 Â
 ) Â
 Â
 UPDATE  @tmpTestScore Â
 SET TestCenterFK = TestCenterPK, @TempTestCenterFK = TestCenterPK Â
 FROM  tblTestCenter AS TC Â
 WHERE TC.TestCenterNumber = Â
 CASE Â
  When SUBSTRING(ExID, 1, 3) = 'PPB' Then Â
  SUBSTRING(TCCd, LEN(TCCd)-3, 4)
  ELSE Â
  SUBSTRING(TCCd, LEN(TCCd)-5, 4) Â
  END Â
 Â
 UPDATE  @tmpTestScore Â
 SET TestCenterFK = 'OSS' + Â
 CASE Â
  When SUBSTRING(ExID, 1, 3) = 'PPB' Then Â
  TCCd Â
  ELSE Â
  SUBSTRING(TCCd, 1, LEN(TCCd)-2) Â
  END Â
 WHERE TestCenterFK IS NULL Â
 Â
 UPDATE  @tmpTestScore Â
 SET @TempTestCenterFK = 'OSS' + Â
 CASE Â
  When SUBSTRING(ExID, 1, 3) = 'PPB' Then
  TCCd Â
  ELSE Â
  SUBSTRING(TCCd, 1, LEN(TCCd)-2) Â
  END Â
 WHERE TestCenterFK IS NULL Â
 Â
 Â
 Â
 UPDATE @tmpTestScore Â
 SET TestFormFK = Â
 CASE dbo.udf_GetTestFormPK(Fmt,
  WHEN 0 THEN 'OSS' + Fmt + '~' + Frm + '~' + SUBSTRING(TestDt,1,4) Â
  ELSE CONVERT(VARCHAR(20),dbo.ud
 END Â
 Â
 Â
 UPDATE @tmpTestScore Â
 SET Lan = Â
 CASE Lan Â
  WHEN '1' THEN '1' Â
  WHEN '6' THEN '1' Â
  WHEN '7' THEN '1' Â
  WHEN '3' THEN '3' Â
  WHEN '4' THEN '2' Â
  WHEN '5' THEN '1' Â
  WHEN '17' THEN '1' Â
  WHEN '19' THEN '3' Â
  WHEN '20' THEN '2' Â
  ELSE 'OSS' + Lan Â
 END Â
 --------------------------
 DECLARE @maxHandle AS INT Â
 SELECT @maxHandle = MAX(SEQ) FROM @tmpExaminee Â
 DECLARE @handle AS INT Â
 SET @handle = 1 Â
 DECLARE @ExID AS VARCHAR(50) Â
 Â
 WHILE (@handle <= @maxHandle) Â
 BEGIN Â
 SELECT @ExID = ExID FROM @tmpExaminee WHERE Seq = @handle Â
 DECLARE @ExamineeExists AS BIT Â
 SELECT @ExamineeExists=COUNT(*) FROM tblStageExaminee WHERE ExamineeID=@ExID Â
 Â
 IF(@ExamineeExists>0) Â
  UPDATE tblStageExaminee Â
  SET  PPBID = IDNum, Â
  PPBIDTypeFK = IDType, Â
  FirstName = FNm, Â
  MiddleInitial = MI, Â
  LastName = LNm, Â
  NameSuffix = Sfx, Â
  AddressLine1 = StAdd, Â
  City = tE.City, Â
  State = StCd, Â
  ZipCode = SUBSTRING(ZipCd,1,5), Â
  ZipCodeExtn = Â
   CASE Â
   WHEN LEN(ZipCd) > 5 THEN REPLACE(SUBSTRING(ZipCd, 6, LEN(ZipCd)), '-','') Â
   ELSE NULL Â
   END, Â
  EdNA_CountyFK = SubJIDCd, Â
  PrimaryLanguage = PrLan, Â
  DateofBirth = DOB, Â
  Gender = GenCd, Â
  PPBEthnicCodeFK = EthCd, Â
  HighestGradeCompleted = EdLvl, Â
  WithdrawalYear = LastYr, Â
  PAResidencyInd = Â
   CASE SU01 Â
   WHEN 'N' THEN 0 Â
   ELSE 1 Â
   END, Â
  SDIssuedDiplomaInd = Â
   CASE SU02 Â
   WHEN 'Y' THEN 1 Â
   ELSE  0 Â
   END, Â
  PracticeTestInd = PTest, Â
  CredStatusInd = CredStat, Â
  CredStatusDate = CredDt, Â
  InstructionalCenterCode = ICCd, Â
  StageExamineeRecordStatusF
  ByPassInd = 0,  Â
  TestCenterFK = @TempTestCenterFK, Â
  MilitaryExamineeInd = MilCd, Â
  AuditChanPPBate = GETDATE(), Â
  AuditChangeUserName = @pAuditUserName Â
  FROM @tmpExaminee AS tE Â
  WHERE  Seq = @handle AND Â
  ExamineeID = @ExID
 ELSE Â
  INSERT INTO tblStageExaminee( Â
  ExamineeID, Â
  PPBID, Â
  PPBIDTypeFK, Â
  FirstName, Â
  MiddleInitial, Â
  LastName, Â
  NameSuffix, Â
  AddressLine1, Â
  City, Â
  State, Â
  ZipCode, Â
  ZipCodeExtn, Â
  EdNA_CountyFK, Â
  PrimaryLanguage, Â
  DateofBirth, Â
  Gender, Â
  PPBEthnicCodeFK, Â
  HighestGradeCompleted, Â
  WithdrawalYear, Â
  PAResidencyInd, Â
  SDIssuedDiplomaInd, Â
  PracticeTestInd, Â
  CredStatusInd, Â
  CredStatusDate, Â
  InstructionalCenterCode, Â
  StageExamineeRecordStatusF
  ByPassInd, Â
  TestCenterFK, Â
  MilitaryExamineeInd, Â
  AuditAddDate, Â
  AuditAddUserName, Â
  AuditChanPPBate, Â
  AuditChangeUserName) Â
  (SELECT Â
  ExID, Â
  IDNum, Â
  IDType, Â
  FNm, Â
  MI, Â
  LNm, Â
  Sfx, Â
  StAdd, Â
  City, Â
  StCd, Â
  SUBSTRING(ZipCd,1,5), Â
  CASE Â
   WHEN LEN(ZipCd) > 5 THEN REPLACE(SUBSTRING(ZipCd, 6, LEN(ZipCd)), '-','') Â
   ELSE NULL Â
  END, Â
  SubJIDCd, Â
  PrLan, Â
  DOB, Â
  GenCd, Â
  EthCd, Â
  EdLvl, Â
  LastYr, Â
  CASE SU01 Â
   WHEN 'N' THEN 0 Â
   ELSE 1 Â
  END, Â
  CASE SU02 Â
   WHEN 'Y' THEN 1 Â
   ELSE 0 Â
  END, Â
  PTest,   Â
  CredStat, Â
  CredDt, Â
  ICCd, Â
  1, Â
  0, Â
  @TempTestCenterFK, Â
  MilCd, Â
  GETDATE(), Â
  @pAuditUserName, Â
  GETDATE(), Â
  @pAuditUserName Â
  FROM @tmpExaminee AS tE Â
  WHERE  Seq = @handle Â
  ) Â
 Â
 DECLARE @StageExamineePK AS INT Â
 SELECT @StageExamineePK = StageExamineePK Â
 FROM tblStageExaminee Â
 WHERE ExamineeID=@ExID Â
 Â
 ----------------Import into tblStageTest--------------
 UPDATE @tmpTestScore Â
 SET StageExamineeFK = SE.StageExamineePK Â
 FROM tblStageExaminee AS SE Â
 WHERE Seq = @handle AND Â
  ExamineeID = @ExID Â
 Â
 INSERT INTO tblStageTest( Â
  StageExamineeFK, Â
  TestCenterFK, Â
  TestDate, Â
  AuditAddDate, Â
  AuditAddUserName, Â
  AuditChanPPBate, Â
  AuditChangeUserName) Â
 (SELECT DISTINCT Â
  StageExamineeFK, Â
  tTS.TestCenterFK, Â
  TestDt, Â
  GETDATE(), Â
  @pAuditUserName, Â
  GETDATE(), Â
  @pAuditUserName Â
 FROM @tmpTestScore AS tTS Â
 WHERE Seq = @handle AND Â
  CONVERT(VARCHAR(10),tTS.St
  (SELECT CONVERT(VARCHAR(10),StageE
 ) Â
 Â
 Â
 UPDATE tblStageExaminee Â
  SET  ByPassInd = 1 Â
 WHERE StageExamineePK not in (Select distinct StageExamineeFK from tblStageTest) Â
 Â
 DECLARE @count Int Â
 SELECT @count = count(*)  from tblStageExaminee where StageExamineePK = @StageExamineePK and ByPassInd = 1 Â
 IF (@count > 0) Â
 BEGIN Â
  EXEC sp_xml_removedocument @hdoc Â
  RETURN Â
 END Â
Â
 UPDATE @tmpTestScore Â
 SET StageTestFK = ST.StageTestPK Â
 FROM @tmpTestScore AS tTS Â
 INNER JOIN tblStageTest AS ST ON Â
  tTS.StageExamineeFK = ST.StageExamineeFK AND Â
  tTS.TestDt = ST.TestDate AND Â
  tTS.TestcenterFK = ST.TestcenterFK Â
 WHERE Seq = @handle Â
 Â
 ----------------Import into tblStageTestScore---------
 UPDATE  tblStageTestScore Â
 SET TestFormFK = tTS.TestFormFK, Â
  TestLanguageFK = Lan, Â
  SubjectScore = Std, Â
  ScorePercent = Rnk, Â
  InvalidTestForm = FErr, Â
  InvalidAge = AErr, Â
  MaxRetestError =MErr, Â
  QuestionableActivity = QErr, Â
  AuditChanPPBate = GETDATE(), Â
  AuditChangeUserName = @pAuditUserName Â
 FROM @tmpTestScore tTS Â
 WHERE Seq = @handle AND Â
  tTS.StageTestFK = tblStageTestScore.StageTes
  tTS.TestNbr = CONVERT(VARCHAR(10),TestSu
 Â
 INSERT INTO tblStageTestScore( Â
  StageTestFK, Â
  TestFormFK, Â
  TestSubjectFK, Â
  TestLanguageFK, Â
  SubjectScore, Â
  ScorePercent, Â
  InvalidTestForm, Â
  InvalidAge, Â
  MaxRetestError, Â
  QuestionableActivity, Â
  AuditAddDate, Â
  AuditAddUserName, Â
  AuditChanPPBate, Â
  AuditChangeUserName) Â
 (SELECT Â
  StageTestFK, Â
  TestFormFK, Â
  TestNbr, Â
  Lan, Â
  Std, Â
  Rnk, Â
  FErr, Â
  AErr, Â
  MErr, Â
  QErr, Â
  GETDATE(), Â
  @pAuditUserName, Â
  GETDATE(), Â
  @pAuditUserName Â
 FROM @tmpTestScore tTS Â
 WHERE Seq = @handle AND Â
  CONVERT(VARCHAR(10),tTS.St
  (SELECT CONVERT(VARCHAR(10),StageT
 ) Â
 Â
 Â
 Â
 INSERT INTO tblStageExamineeReason Â
 ( Â
  StageExamineeFK, Â
  TestReasonFK, Â
  AuditAddDate, Â
  AuditAddUserName Â
 ) Â
 ( Â
 SELECT Â
  SE.StageExamineePK, Â
  RFT, Â
  GETDATE(), Â
  @pAuditUserName Â
 FROM OPENXML(@hdoc,'/Root/Reaso
  Seq [smallint] 'Seq' , Â
  ExID [varchar] (50)  'ExID' , Â
  RFT [varchar] (5)  'RFT') AS XR Â
 INNER JOIN tblStageExaminee AS SE ON Â
  XR.ExID = SE.ExamineeID Â
 WHERE  Seq = @handle AND Â
  CONVERT(VARCHAR(10),StageE
  (SELECT CONVERT(VARCHAR(10),StageE
 ) Â
 SET @handle = @handle + 1 Â
 END Â
 Â
 EXEC sp_xml_removedocument @hdoc Â
 Â
 EXEC proc_BchBatchProcessStageE
END