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报告有一个表,该表的每个文本框都可以单击和钻取操作。当用户单击任何文本框时,将调用detail.rdl报告。传递给detail.rdl报告的一个参数在SQL中用作列名。此SQL获取detail.rdl报表所需的数据 T他是:Sql 报表生成器可能显示错误,sql,reporting-services,sql-server-2012,reportbuilder3.0,Sql,Reporting Services,Sql Server 2012,Reportbuilder3.0,我正在“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报告有一个表,该表的每个文本框都可以单击和钻取操作。当用户单击任何文本框时,将调用detail.rdl报告。传递给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)
W运行此查询时,我得到错误:
执行查询时出错。附近语法不正确
“@var_1”。(Microsoft SQL Server报表生成器)
我 由于错误本身信息量不大,我无法找出为什么会出现此错误。
任何关于此错误原因的线索都将非常有用。错误是正确的,您的代码在语法上是不正确的 您可能需要将代码更改为以下内容:
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)
您需要使用+
将字符串集中在所有正确的位置