Ниже приведен пример моей проблемы без каких-либо данных. У меня проблема, когда я создал хранимую процедуру с IF, чтобы параметр определял, какой набор данных я создаю в SSRS, однако, когда я передаю параметр в SSRS, я не получаю набор данных, который я запрашиваю. Мой пример скрипта выглядит следующим образом:Параметры набора данных SSRS не работают
USE [InfoPortal]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[usp_Report_SSRSTest]
(
@ReportType VARCHAR(255) = NULL
, @Debug VARCHAR(1) = NULL
)
AS
BEGIN
SET NOCOUNT ON
SET FMTONLY OFF
CREATE TABLE #data1
(
number INT
,text1 VARCHAR(100)
,text2 VARCHAR(300)
)
CREATE TABLE #data2
(
number INT
,text3 VARCHAR(100)
,text4 VARCHAR(300)
)
IF @ReportType = 'Y'
BEGIN
SELECT
number
, text1
, text2
FROM #data1
END
ELSE
BEGIN
SELECT
number
, text3
, text4
FROM #data2
END
END
Так что, когда я иду в Datasets> Добавить Dataset, я выбираю «тип запроса» из «хранимой процедуры» и выберите сохраненный процедурный выше. Затем я перехожу к параметрам, а в @ReportType вводя «Y» и @Debug, я вводил «N». Я нажимаю обновить поля, а затем ОК. Но вместо того, чтобы передавать «Y» в хранимый процесс, кажется, что ничего не пропускает, потому что я получаю часть ELSE хранимой процедуры, возвращаемую как доступные поля в моем наборе данных. Когда я пытаюсь использовать @ReportType «N» и @Debug «N», я получаю доступные мне поля, но Im полагаю, что это связано с тем, что он передает NULL в @ReportType.
Есть что-то, что мне не хватает?
Когда я запускаю SSMS proc с теми же параметрами, что и выше, я получаю требуемые данные. Когда я запускаю хранимый proc в Query Designer в SSRS, это также прекрасно.
Итак, почему мой отчет передавал NULL в качестве параметра хранимой процедуры, даже если я устанавливаю параметр в значение в свойствах Dataset?
Вы упоминаете, что «кажется, что ничего не пропускаете», подтвердили ли вы? Используйте 'SQL Server Profiler', чтобы определить, что это правильно. – Tak
спасибо за ответ @t_m. Да, мы запустили профайлер, и кажется, что в параметре передается NULL, даже если мы установили его в свойствах набора данных. –