【发布时间】:2015-02-09 05:01:10
【问题描述】:
我正在使用带有 SSRS 2010 的 SQL Server 2008R2。我正在测试一个使用 if 语句在两个简单 SQL 语句之一的执行之间切换的存储过程。我的最终目标是用存储过程替换嵌入在多个 SSRS 报告中的 SQL,这些存储过程根据日期参数选择要运行的语句。
我在 SSMS 中测试了该语句,它在语句之间切换并产生没有问题的结果。但是,在 SSRS 中,当我执行报告并测试第二条语句时,除了计算文本列之外,我的结果集为空。如果我从 SSRS 查询设计器运行相同的过程,则执行的语句之间的切换有效
谁能帮我理解为什么在执行报告时开关不起作用?这是我正在使用的 SQL:
begin
if @reportdate >='10/1/2014' goto convformat
if @reportdate <'10/1/2014' goto preconvformat
end
preconvformat:
SELECT TOP (1000) col1
,col2
,col3
,col4
,col5
,col6
,col7
,'t1' AS OriginalDataSource
FROM t1 AS arh WITH (NOLOCK)
LEFT JOIN t1a1 a WITH (NOLOCK)
ON a.col1 = arh.col1
WHERE (arh.DateCreated < '1/1/2015')
and a.col2 = '12345678'
goto testend
convformat:
SELECT TOP 1000 arcus.col1
,col2
,col3
,col4
,col5
,col6
,col7
,'t3' AS OriginalDataSource
FROM t3. rmrtrk WITH (NOLOCK)
LEFT JOIN t3t1 arcus WITH (NOLOCK)
ON arcus.col1 = rmrtrk.col1
where customer_number = '12345678'
testend:
【问题讨论】:
-
我在数据集定义中未指定数据库+架构时遇到了这个问题。
-
对我来说这个日期似乎有点可疑
'10/1/2014',尝试使用 ANSI 日期,即YYYYMMDD。
标签: sql sql-server tsql reporting-services ssms