Unplanned
Last Updated: 20 Apr 2022 13:32 by Wojciech
Wojciech
Created on: 20 Apr 2022 13:32
Type: Bug Report
1
The Schema is not returned correctly when the SP returns different query depending on a parameter

Here is an example of the procedure on AdventureWorks 2019 database:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ProcedureConditionsTest]
@ReportPart SMALLINT = 1
AS
BEGIN
SET NOCOUNT ON;
IF @ReportPart = 1
BEGIN
SELECT P.FirstName AS FirstNamePart1, P.MiddleName AS MiddleNamePart1, P.LastName AS LastNamePart1,
	A.AddressLine1 AS AddressLine1Part1, A.AddressLine2 AS AddressLine2Part1, A.City AS CityPart1, A.PostalCode AS PostalCodePart1,
	SP.StateProvinceCode AS StateProvinceCodePart1, SP.CountryRegionCode AS CountryRegionCodePart1, SP.[Name] AS NamePart1
FROM [Person].[Person] AS P
JOIN [Person].[BusinessEntityAddress] AS BEA ON P.BusinessEntityID = BEA.BusinessEntityID
JOIN [Person].[Address] AS A ON BEA.AddressID = A.AddressID
JOIN [Person].[StateProvince] AS SP ON A.StateProvinceID = SP.StateProvinceID
WHERE P.FirstName BETWEEN 'A. Scott' AND 'Justine'
ORDER BY P.FirstName, P.LastName
END
ELSE IF @ReportPart = 2
BEGIN
SELECT P.FirstName AS FirstNamePart2, P.MiddleName AS MiddleNamePart2, P.LastName AS LastNamePart2,
	A.AddressLine1 AS AddressLine1Part2, A.AddressLine2 AS AddressLine2Part2, A.City AS CityPart2, A.PostalCode AS PostalCodePart2,
	SP.StateProvinceCode AS StateProvinceCodePart2, SP.CountryRegionCode AS CountryRegionCodePart2, SP.[Name] AS NamePart2
FROM [Person].[Person] AS P
JOIN [Person].[BusinessEntityAddress] AS BEA ON P.BusinessEntityID = BEA.BusinessEntityID
JOIN [Person].[Address] AS A ON BEA.AddressID = A.AddressID
JOIN [Person].[StateProvince] AS SP ON A.StateProvinceID = SP.StateProvinceID
WHERE P.FirstName BETWEEN 'K.' AND 'Zoe'
ORDER BY P.FirstName, P.LastName
END
END
GO

In the report Designer I added two SQL Data Source named Part1 and Part2:

Part1:

EXEC [dbo].[ProcedureConditionsTest]
@ReportPart = 1


Part2:

EXEC [dbo].[ProcedureConditionsTest]
@ReportPart = 2

On both sources, I have column sufix Part1.

0 comments