【发布时间】:2014-01-29 15:02:30
【问题描述】:
我有以下 SP,它在单独运行时可以正常工作:
USE [Orders]
GO
SET FMTONLY OFF;
CREATE PROCEDURE [dbo].[Get_Details_by_Type]
@isArchived varchar(10),
@Type varchar(50)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @sqlQuery nvarchar(max)
IF(@isArchived = 'ALL')
BEGIN
set @sqlQuery = 'SELECT * FROM [dbo].[Orders]
WHERE ' + @Type + ' != €
ORDER BY [IDNumber]'
exec sp_executesql @sqlQuery
END
ELSE
BEGIN
set @sqlQuery = 'SELECT * FROM [dbo].[Orders]
WHERE ' + @Type + ' != € AND [isArchived] = ' + @isArchived + ' ORDER BY [IDNumber]'
exec sp_executesql @sqlQuery
END
END
SET FMTONLY ON;
我遇到的问题是,当我为 SSRS 报告添加数据集时,它在“字段”部分中没有提取任何字段/列。我猜是动态 SQL 的原因?
我该如何解决?
【问题讨论】:
-
尝试在
SET NOCOUNT ON之后添加SET FMTONLY OFF; -
好的,我已经编辑了上面的代码以反映您的更改,但没有任何反应。我把它放在正确的地方了吗?
-
不,你应该将它添加到 sp 中,在
SET NOCOUNT ON;987654324@ 之后(或之前) -
不走运。手动添加确实有效,但有很多字段:(
-
手动将每个字段添加到 SSRS 报告中数据集的字段部分。
标签: sql sql-server stored-procedures reporting-services