当您尝试在MS SQL Server 2008上创建此proc并尝试绑定报表(Crystal或SQL Server报表)时,您无法从报表中获取任何参数。我没有得到任何错误。我只看到proc名称,并且没有列下面的列来从中获取任何数据。请帮忙
create proc getdata
@where as nvarchar (max)
as
declare @sql as varchar(max)
set @sql='select cp.address,
(case when cp.male =1 then ''Male''
when cp.female =1 then ''Female''
else null end ) AS "Gender"
from consumer_premium cp where '+ @where
exec(@sql);
@where示例执行
getdata 'male=1'
表格
CREATE TABLE [dbo].[Consumer_Premium](
[Address] [nvarchar](255) NULL,
[Male] [bit] NULL,
[Female] [bit] NULL)
请帮忙。
答案 0 :(得分:1)
如果您使用SSRS 2008
,可以尝试以下一种方法。以下示例是使用SSRS 2008根据问题中提供的数据创建的。
使用SQL Scripts部分下提供的脚本创建名为dbo.Consumer_Premium
的表和名为dbo.GetData
的存储过程。使用数据填充表格,如屏幕截图# 1 。
创建名为BindWhere.rdl
的SSRS报告,如屏幕截图# 2 所示。
使用屏幕截图# 3 - # 5 中显示的设置创建名为Gender
的报告参数。
配置报告数据源,如屏幕截图# 6 - # 8 所示。
屏幕截图# 9 显示默认报告执行,参数Gender
设置为值男性。
屏幕截图# 10 显示参数Gender
值更改为女性时的默认报告执行情况。您需要单击“查看报告”按钮刷新数据。
希望有所帮助。
SQL脚本:
CREATE TABLE [dbo].[Consumer_Premium](
[Address] [nvarchar](255) NULL,
[Male] [bit] NULL,
[Female] [bit] NULL
) ON [PRIMARY]
GO
CREATE PROCEDURE getdata
(
@where AS NVARCHAR(MAX)
)
AS
DECLARE @sql AS VARCHAR(MAX)
SET @sql='select cp.address,
(case when cp.male =1 then ''Male''
when cp.female =1 then ''Female''
else null end ) AS "Gender"
from consumer_premium cp where '+ @where
EXEC(@sql);
GO
屏幕截图#1:
屏幕截图#2:
屏幕截图#3:
屏幕截图#4:
屏幕截图#5:
屏幕截图#6:
屏幕截图#7:
屏幕截图#8:
屏幕截图#9:
屏幕截图#10: