2017-10-30 2 views
0
을 출력 할 수없는 이유

아래에 SQL 문이 있지만 작동하지 않습니다. 오류 msg는 "키워드 'AS'근처의 구문이 올바르지 않습니다.". 내가 '%'를 제거하면 발견 된 것처럼 작동하지만이 SQL에서 '%'를 출력해야합니다. 누군가 제안 할 수 있습니까?내 sqlserver 프로 시저가 %

print @str 

줄 것이다 :

declare @per varchar(10) = '0.00%' 
set @str = 'select ' + @per + ' AS ColumnA from #TempSui' ; 
exec (@str) 
+1

여기서 왜 동적 SQL을 사용하고 있습니까? –

답변

2

당신이이 UTE는 다음과 같습니다 select 0.00% AS ColumnA from #TempSui', 당신은 따옴표를 추가해야합니다

'select ' + QUOTENAME(@per, '''') + ' AS ColumnA from #TempSui' 
+1

단순한 연결과는 달리, 'QUOTENAME'이 값 내에서 작은 따옴표를 이스케이프 처리하도록주의해야합니다. –

2

나는 그냥 동적 TSQL을 디버깅 할 때 PRINT를 사용하는 것은 좋은 생각이 아니다 따옴표

declare @per varchar(10) = '0.00%' 
set @str = 'select ''' + @per + ''' AS ColumnA from #TempSui' ; 
exec (@str) 

를 그리워 생각

select '0.00%' AS ColumnA from #TempSui 
2

매개 변수를 사용하는 방법에 대해 알아보세요. 그런 다음이 문제가 발생하지 않습니다.

declare @per varchar(10) = '0.00%' 
set @str = 'select @per AS ColumnA from #TempSui' ; 

exec sp_executesql @str, N'@per varchar(10)', @[email protected]; 

Voila! 전혀 문제 없습니다. 그리고 코드가 더 안전하고 더 효율적일 수 있습니다 (실행될 때마다 다시 컴파일 할 필요가 없습니다).

관련 문제