2017-05-11 5 views
-1

"SQL Server Reporting Services 2012"에서 "Microsoft SQL Server 보고서 작성기 3.0"을 사용하고 있습니다. 주 보고서의 main.rdl에서 아마도 잘못된 오류를 표시하는 보고서 작성자

나는 드릴 스루 보고서 detail.rdl를 호출하고 main.rdl 보고서가있다 detail.rdl

를 실행 (@ VAR_1, @ VAR_2 및 @Column) 세 개의 매개 변수를 전달하고있다 테이블 및이 테이블의 각 텍스트 상자는 클릭 할 수 있고 드릴 스루 동작을 수행합니다. 사용자가 텍스트 상자를 클릭하면 detail.rdl 보고서가 호출됩니다. detail.rdl 보고서로 전달되는 하나의 매개 변수는 SQL의 열 이름으로 사용됩니다. 이 SQL은 detail.rdl 보고서에 필요한 데이터를 가져옵니다.

는 SQL은 다음과 같습니다 오류 자체가 매우 아니므로

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

내가 왜이 오류를 얻고있다 찾을 수 없습니다 :이 쿼리를 실행하면

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)‌‌ 

내가 오류 유익한. 이 오류의 원인이 무엇인지에 대한 단서가 있으면 도움이 될 것입니다.

답변

2

오류가 정확합니다. 코드가 구문 상 올바르지 않습니다.

가능성, 당신은 이런 식으로 코드를 변경해야합니다

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) 

당신은 모든 권리 장소에서 함께 문자열을 CONCAT하는 +를 사용해야합니다.