是否可以在 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 相同的字段。应使用单个存储过程创建数据集,而不使用表达式生成器,然后在创建和保存字段后更改为表达式。