我有一个从SSRS报告中调用的存储过程。存储过程本身工作正常(例如,下面的代码返回预期的结果)。报告传递了两个参数,DateTime
,但这些参数似乎完全被忽略了。如何验证从存储过程中传递到存储过程的值?
USE [MyDatabase]
GO
DECLARE @return_value int
EXEC @return_value = [reports].[uspMyReport]
@StartDate = N'3/15/2013',
@EndDate = N'3/16/2013'
SELECT 'Return Value' = @return_value
GO
从BIDS开始,在共享数据集中,像这样调用sproc:
EXEC reports.[uspMyReport] @StartDate, @EndDate
答案:我可以看到传递给存储过程的值,如下所示:
DECLARE @StartDateString VARCHAR(50)
SELECT @StartDateString = CAST(@StartDate AS VARCHAR)
RAISERROR(N'StartDate: %s', 18, 0, @StartDateString)
RETURN
答案 0 :(得分:1)
有几种方法可以检查参数值的范围:
您可以按照此处所述引发错误: The "right" way to do stored procedure parameter validation 这将验证值是否到达存储过程: 如果不这样做,则storedproc参数可能未链接到Report参数,您需要配置报告。 如果他们这样做,最终选择查询以某种方式不使用它们,您需要修复storedproc。
另一种方法:使用相同的检查不引发错误,但返回一个虚拟数据集可能包含错误信息,然后将显示在报告中(可能仅对测试方案有用)。
最后,您可以在运行报告之前启动SQL Server探查器,并查看从SSRS调用您的过程的确切方式。这样您就不必更改调试调用本身的过程。