Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Invalid Object #AllRecords
Message
De
26/04/2016 10:45:23
John Baird
Coatesville, Pennsylvanie, États-Unis
 
 
À
Tous
Information générale
Forum:
Microsoft SQL Server
Catégorie:
Syntaxe SQL
Titre:
Invalid Object #AllRecords
Divers
Thread ID:
01635414
Message ID:
01635414
Vues:
61
I have the following stored proc which is throwing an exception: "Invalid Ojbect: #AllRecords". It runs fine from sql management console, but not from .net.
/*
gp_GetProjectPageCountReportByCriteria
2016.03.31/jb Created
SAMPLE Usage: 

EXECUTE dbo.gp_GetProjectPageCountReportByCriteria 542
**************************************************************************/
-- Initialize this stored procedure
gp_InitializeProcedure 'gp_GetProjectPageCountReportByCriteria', 'Fetch page count report data based on account period.'
GO

-- Script this stored procedure in an ALTER so permissions are not lost
ALTER PROCEDURE dbo.gp_GetProjectPageCountReportByCriteria 
			@PeriodId int
AS 
	--For Performance to cut down on network bandwidth.
	SET NOCOUNT ON;
	--To Reduce the risk of lock contention
	SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

	DECLARE @RecordsForReturn TABLE
	(
		AccountPeriod nvarchar(32), 
		Site nvarchar(256),
		Environment nvarchar(256),
		Complex nvarchar(128), 
		FundGroup NVARCHAR(256), 
		Fund NVARCHAR(4000), 
		FundCode NVARCHAR(4000),  
		ProjectName nvarchar(256),  
		Frequency nvarchar(16), 
		OutputMedia nvarchar(32), 
		Revision nvarchar(12),  
		OutputType nvarchar(12),  
		Comments nvarchar(MAX), 
		PublishDateTime nvarchar(32), 
		[User] nvarchar(256), 
		ProjectPageCount nvarchar(12), 
		DocumentLink nvarchar(12) 
	) 

	DECLARE @FundTable TABLE
	(
		Id INT IDENTITY(1,1),
		Fund nvarchar(128) , 
		FundCode nvarchar(16)  
	) 


	CREATE TABLE #AllRecords
	(
		Id INT IDENTITY(1,1),
		AccountPeriod nvarchar(32), 
		Site nvarchar(256),
		Environment nvarchar(256),
		Complex nvarchar(128), 
		FundGroup nvarchar(256), 
		Fund nvarchar(128), 
		FundCode nvarchar(16),  
		ProjectName nvarchar(256),  
		Frequency nvarchar(16), 
		OutputMedia nvarchar(32), 
		Revision nvarchar(12),  
		OutputType nvarchar(12),  
		Comments nvarchar(MAX), 
		PublishDateTime nvarchar(32), 
		[User] nvarchar(256), 
		ProjectPageCount nvarchar(12), 
		DocumentLink nvarchar(12),
		Deleted BIT
	) 

	CREATE INDEX IDX_FundGroup ON #AllRecords(FundGroup)
	CREATE INDEX IDX_Fund ON #AllRecords(Fund)
	CREATE INDEX IDX_FundCode ON #AllRecords(FundCode)

	DECLARE @CurrentRecord TABLE
	(
		Id INT,
		AccountPeriod nvarchar(32), 
		Site nvarchar(256),
		Environment nvarchar(256),
		Complex nvarchar(128), 
		FundGroup nvarchar(256), 
		Fund nvarchar(4000), 
		FundCode nvarchar(4000),  
		ProjectName nvarchar(256),  
		Frequency nvarchar(16), 
		OutputMedia nvarchar(32), 
		Revision nvarchar(12),  
		OutputType nvarchar(12),  
		Comments nvarchar(MAX), 
		PublishDateTime nvarchar(32), 
		[User] nvarchar(256), 
		ProjectPageCount nvarchar(12), 
		DocumentLink nvarchar(12) 
	) 

	DECLARE @FundList VARCHAR(4000) = '',
			@FundCodeList VARCHAR(4000) = '',
			@MainIndex INT,
			@SubIndex INT,
			@TotalRecordsMain INT,
			@TotalRecordsSub INT,
			@FundGroup NVARCHAR(256),
			@OldFundGroup NVARCHAR(256),
			@OldFund NVARCHAR(128),
			@OldFundCode NVARCHAR(16),
			@CurFund NVARCHAR(128),
			@CurFundCode NVARCHAR(16)
			

	INSERT INTO #AllRecords	
		SELECT DISTINCT ap.AccountPeriodEnd,
				   '' AS Site,
				   '' AS Environment,
				   c.ComplexName AS Complex, 
				   fg.FundGroupName AS FundGroup,
				   f.FundName AS Fund,
				   f.FundCode, 
				   di.DocumentInstanceName AS ProjectName,
				   di.PeriodType AS Frequency,
				   oq.OutputType AS OutputMedia,
				   dio.Version AS Revision,
				   oq.OutputType, 
				   dic.Comments,
				   dio.LastGeneratedDate AS PublishDateTime,
				   oq.UserName AS [User],
				   oq.PDFPageCount AS ProjectPageCount,
				   dio.PK_DocumentInstanceOutput AS DocumentLink,
				   Deleted = 0
		FROM OutputQueue oq
			INNER JOIN DocumentInstanceOutput dio ON oq.FK_DocumentInstanceOutput = dio.PK_DocumentInstanceOutput
			INNER JOIN DocumentInstanceOutputFormat diof ON  diof.PK_DocumentInstanceOutputFormat = dio.FK_DocumentInstanceOutputFormat
			INNER JOIN DocumentInstance di ON di.PK_DocumentInstance = diof.FK_DocumentInstance
			INNER JOIN Complex c ON c.PK_Complex = di.FK_Complex
			INNER JOIN FundGroup fg ON fg.FK_Complex = c.PK_Complex
			INNER JOIN Fund f ON f.FK_FundGroup = fg.PK_FundGroup
			INNER JOIN ComplexAccountPeriod cap on cap.FK_Complex = c.PK_Complex AND
												   cap.ComplexAccountPeriodType = 'SR'
			INNER JOIN AccountPeriod ap ON ap.PK_AccountPeriod = di.FK_AccountPeriod
			LEFT JOIN DocumentInstanceComment dic ON dic.FK_DocumentInstanceOutput = dio.PK_DocumentInstanceOutput
			LEFT JOIN UserInfo ui ON ui.PK_UserInfo = dic.FK_UserInfo AND
									 ui.UserName = oq.UserName
		WHERE di.FK_AccountPeriod = 542 AND
			  oq.OutputType IN ('PDF', 'WORD') 
		ORDER BY Complex, FundGroup, Fund, FundCode, Revision DESC

		SET @MainIndex = 1;
		SET @OldFundGroup = '';
		SET @TotalRecordsMain = (SELECT COUNT(*) FROM #AllRecords)

		WHILE (@MainIndex < @TotalRecordsMain)
		BEGIN
			INSERT INTO @CurrentRecord
				SELECT TOP 1 
					id,
					AccountPeriod,
					Site,
					Environment,
					Complex, 
					FundGroup,
					Fund,
					FundCode, 
					ProjectName,
					Frequency,
					OutputMedia,
					Revision,
					OutputType, 
					Comments,
					PublishDateTime,
					[User],
					ProjectPageCount,
					DocumentLink
			FROM #AllRecords
			WHERE FundGroup != @OldFundGroup AND
				  Deleted != 1
			
			SET @FundGroup = (SELECT FundGroup FROM @CurrentRecord)
			IF @FundGroup != @OldFundGroup
			BEGIN
				SET @OldFundGroup = @FundGroup

				INSERT INTO @FundTable
					SELECT DISTINCT Fund, FundCode
						FROM #AllRecords 
						WHERE FundGroup = @FundGroup

				SELECT @FundList =  @FundList + Fund + ', ',
					   @FundCodeList = @FundCodeList + FundCode + ', '
					FROM @FundTable

				UPDATE @CurrentRecord
					SET Fund = @FundList,
						FundCode = @FundCodeList


				INSERT INTO @RecordsForReturn
					SELECT  AccountPeriod,
							Site,
							Environment,
							Complex, 
							FundGroup,
							Fund,
							FundCode, 
							ProjectName,
							Frequency,
							OutputMedia,
							Revision,
							OutputType, 
							Comments,
							PublishDateTime,
							[User],
							ProjectPageCount,
							DocumentLink
					 FROM @CurrentRecord

				UPDATE #AllRecords SET Deleted = 1 WHERE FundGroup = @FundGroup
				DELETE FROM @FundTable
				DELETE FROM @CurrentRecord	
			END

			SET @TotalRecordsMain = (SELECT COUNT(*) FROM #AllRecords WHERE FundGroup != @FundGroup AND Deleted != 1)
			SET @MainIndex = 1
			SET @FundList = ''
			SET @FundCodeList = ''
		END
			
		SELECT * FROM @RecordsForReturn
		DROP TABLE #AllRecords

GO
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform