报告生成器可能显示不正确的错误

Report builder probably showing incorrect error

我在 "SQL Server Reporting Services 2012" 上使用 "Microsoft SQL Server Report Builder 3.0"。

从主报表 main.rdl 我正在调用钻取报表 detail.rdl‌ 并将三个参数(@var_1、@var_2 和 @column)传递给 运行 detail.rdl

main.rdl 报表有一个 table,此 table 的每个文本框都是可单击和钻取操作。当用户单击任何文本框时,将调用 detail.rdl 报告。传递给 detail.rdl 报告的一个参数用作 SQL 中的列名。此 SQL 获取 detail.rdl 报告所需的数据。

他 SQL 是:

DECLARE @SQL varchar(max)

SET @SQL =
'SELECT
[table_name].[col_5]
,[table_name].[col_13]
,[table_name].[col_4]
,[table_name].[col_21]
,[table_name].[col_9]
,[table_name].[col_28]
,[table_name].[col_11]
,' + @column + /*the value in this variable is an existing column name from table table_name*/
' FROM
[table_name]
WHERE
([table_name].[col1] LIKE '@var_1')
AND ([table_name].[col2] LIKE '@var_2')
AND (' + @column + ' is null OR ' + @column + ' = '''' OR ' + @column + ' = ''N/A'' OR ' + @column + ' = ''Unknown'')' /*I want to use same column name here as well*/

exec (@SQL)‌‌

当我 运行 这个查询时我得到错误:

An error occurred while executing the query. Incorrect syntax near '@var_1'. (Microsoft SQL Server Report Builder)‌‌‌

我不明白为什么会收到此错误,因为错误本身并没有提供太多信息。 关于此错误可能是什么原因的任何线索都会非常有帮助。

错误正确,您的代码在语法上不正确。

您可能需要将代码更改为如下内容:

DECLARE @SQL varchar(max) -- , @column varchar(max), @var_1 varchar(max), @var_2 varchar(max)

SET @SQL =
'SELECT
[table_name].[col_5]
,[table_name].[col_13]
,[table_name].[col_4]
,[table_name].[col_21]
,[table_name].[col_9]
,[table_name].[col_28]
,[table_name].[col_11]
,' + @column + /*the value in this variable is an existing column name from table table_name*/
' FROM
[table_name]
WHERE
([table_name].[col1] LIKE ''%' + @var_1 + '%'')
AND ([table_name].[col2] LIKE ''%' + @var_2 + '%'')
AND (' + @column + ' is null OR ' + @column + ' = '''' OR ' + @column + ' = ''N/A'' OR ' + @column + ' = ''Unknown'')' /*I want to use same column name here as well*/

exec (@SQL)

您需要使用 + 在所有正确的位置将字符串连接在一起。