>CREATE PROCEDURE siriussp_ImportCreditNumbers ( > @vcStr VARCHAR(MAX)) >--============================================== >AS > BEGIN > SET NOCOUNT ON; > > DECLARE @x XML > > SET @x = CONVERT(XML,@vcStr) > > IF OBJECT_ID('TempDB..#csrCardNos','U') IS NOT NULL > DROP TABLE #csrCardNos > > CREATE TABLE #csrCardNos ( > num_assign CHAR(17), > num_source INT) > > INSERT INTO #csrCardNos > (num_assign, > num_source) > SELECT T.n.value('(num_assign/text())[1]','char(17)') AS [num_Assign], > T.n.value('(num_source/text())[1]','int') AS [num_Source] > FROM @x.nodes('/VFPData/cardnos') AS T(n); > > --select * from #csrCardNos > IF EXISTS (SELECT 1 > FROM #csrCardNos CN > INNER JOIN gst_pass GP > ON CN.num_assign = GP.swipe_no) > SELECT 'The credit numbers in the file have been already assigned!' AS ErrorMsg > ELSE > BEGIN > BEGIN TRY > INSERT INTO assignno > (ckd_out_to, > num_assign, > num_source) > SELECT -1, > num_assign, > num_source > FROM #csrCardNos > > SELECT '' AS ErrorMsg > END TRY > > BEGIN CATCH > DECLARE @ErrorSeverity INT, > @ErrorNumber INT, > @ErrorMessage VARCHAR(4000), > @ErrorState INT, > @ErrorLine INT, > @ErrorProc VARCHAR(200) > > -- Grab error information from SQL functions > SET @ErrorSeverity = ERROR_SEVERITY() > > SET @ErrorNumber = ERROR_NUMBER() > > SET @ErrorMessage = ERROR_MESSAGE() > > SET @ErrorState = ERROR_STATE() > > SET @ErrorLine = ERROR_LINE() > > SET @ErrorProc = ERROR_PROCEDURE() > > SET @ErrorMessage = 'Problem inserting Card Numbers.' + CHAR(13) + > 'SQL Server Error Message is: ' + CAST(@ErrorNumber AS VARCHAR(10)) + > ' in procedure: ' + @ErrorProc + ' Line: ' + CAST(@ErrorLine AS VARCHAR(10)) + > ' Error text: ' + @ErrorMessage > > -- Not all errors generate an error state, to set to 1 if it's zero > IF @ErrorState = 0 > SET @ErrorState = 1 > > -- If the error renders the transaction as uncommittable or we have open transactions, we may want to rollback > IF @@TRANCOUNT > 0 > BEGIN > --print 'Rollback transaction' > ROLLBACK TRANSACTION > END > > SELECT @ErrorMessage AS ErrorMsg > END CATCH > END > END > >GO >/* Test Cases >PRINT 'Import Credit Numbers:' >declare @Time datetime2(7) = SYSDATETIME(), @Elapsed int > EXECUTE dbo.siriussp_ImportCreditNumbers 0x; > >set @Elapsed = DATEDIFF(microsecond,@time, getdate()) >print 'Elapsed: ' + convert(varchar(10),@Elapsed) + ' microseconds' > >*/ >/* Test Cases >PRINT 'Import Credit Numbers:' >declare @Time datetime2(7) = SYSDATETIME(), @Elapsed int > EXECUTE dbo.siriussp_ImportCreditNumbers 0x; > >set @Elapsed = DATEDIFF(microsecond,@time, getdate()) >print 'Elapsed: ' + convert(varchar(10),@Elapsed) + ' microseconds' > >*/ >>