是否可以在 if else 语句中使用带有存储过程的查询作为 SSRS 中的数据集?
Is it possible to use a query with stored procedures inside if else statement as a Dataset in SSRS?
数据集的示例查询。
if(previousParameterValue=true) exec StoredProcedure1 null, null
else exec StoredProcedure2 null, null, null, null
如果我使用这种格式,只有第一个 SP 的结果可用于参数,并且列表仅针对第一个条件显示。我需要根据先前参数中选择的输入在运行时生成一个列表。有没有办法在 SSRS 中实现此功能?使两个存储过程的输出数量、返回列的名称相同是否有助于实现此功能?
您的数据集查询必须始终return相同的结构、相同的列名和相同的数据类型。
当上述情况成立时,它应该可以正常工作。
就个人而言,我创建了一个临时文件 table,将 SP 的结果转储到其中,然后 return 临时文件 table。这样,即使字段名称不相同或数据类型不完全相同(int 与 smallint 等),SSRS 也只会看到 temp table 结构,它会很好。
例如
CREATE TABLE #t(CustomerID int, CustomerName varchar(100), ValueA float, ValueB float)
IF @myParamater = 1
BEGIN
INSERT INTO #t(CustomerID, CustomerName, ValueA)
EXEC myProcA
END
ELSE
BEGIN
INSERT INTO #t(CustomerID, CustomerName, ValueB)
EXEC myProcB
END
SELECT * FROM #t
数据集查询的表达式生成器可用于创建基于参数的表达式。
IIF 语句可以检查参数和 return 到 运行 的文本。
=IIF(Parameters!myParamater.Value = 1, "EXEC StoredProcedure1", "EXEC StoredProcedure2")
要使这项工作正常进行,存储过程应该 return 相同的字段。应使用单个存储过程创建数据集,而不使用表达式生成器,然后在创建和保存字段后更改为表达式。
数据集的示例查询。
if(previousParameterValue=true) exec StoredProcedure1 null, null
else exec StoredProcedure2 null, null, null, null
如果我使用这种格式,只有第一个 SP 的结果可用于参数,并且列表仅针对第一个条件显示。我需要根据先前参数中选择的输入在运行时生成一个列表。有没有办法在 SSRS 中实现此功能?使两个存储过程的输出数量、返回列的名称相同是否有助于实现此功能?
您的数据集查询必须始终return相同的结构、相同的列名和相同的数据类型。
当上述情况成立时,它应该可以正常工作。
就个人而言,我创建了一个临时文件 table,将 SP 的结果转储到其中,然后 return 临时文件 table。这样,即使字段名称不相同或数据类型不完全相同(int 与 smallint 等),SSRS 也只会看到 temp table 结构,它会很好。
例如
CREATE TABLE #t(CustomerID int, CustomerName varchar(100), ValueA float, ValueB float)
IF @myParamater = 1
BEGIN
INSERT INTO #t(CustomerID, CustomerName, ValueA)
EXEC myProcA
END
ELSE
BEGIN
INSERT INTO #t(CustomerID, CustomerName, ValueB)
EXEC myProcB
END
SELECT * FROM #t
数据集查询的表达式生成器可用于创建基于参数的表达式。
IIF 语句可以检查参数和 return 到 运行 的文本。
=IIF(Parameters!myParamater.Value = 1, "EXEC StoredProcedure1", "EXEC StoredProcedure2")
要使这项工作正常进行,存储过程应该 return 相同的字段。应使用单个存储过程创建数据集,而不使用表达式生成器,然后在创建和保存字段后更改为表达式。