报告生成器可能显示不正确的错误
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)
您需要使用 +
在所有正确的位置将字符串连接在一起。
我在 "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)
您需要使用 +
在所有正确的位置将字符串连接在一起。