2016-08-25 2 views
1

열 이름과 테이블 이름을 변수로 넣는 것에 대해 this post을 읽었습니다. 대괄호로 묶는 열 이름과 테이블 이름을 원합니다. here을 논의, 내가 대괄호를 탈출 [[] 사용하고SQL Server에서 이스케이프 대괄호

CREATE PROCEDURE [dbo].[find_most_frequent] 
    @table_in VARCHAR, 
    @col_2 VARCHAR 
AS 
BEGIN 
    DECLARE @sql NVARCHAR(4000); 

    SET @sql = 
--start of code 
'SELECT' + 
     @col_2 + 
    ' FROM ' + @table_in + 
' GO' 
--end of code  
    print @sql 
    EXEC SP_EXECUTESQL @sql 
END 
GO 

EXEC [dbo].[find_most_frequent] 
     @table_in = '[[]dbo].[[]t1]' 
     ,@col_2 = '[[]c1]' 
GO 

:

@sql = 'SELECT [' + @column_name + '] FROM ...' 

내가 같은 변수에 괄호를 넣어 시도 : 나는 어떤 사람들은 이렇게 보았다. 하지만 작동하지, @ sql은

SELECT[ FROM [ GO 

누가 도와 줄 수 있습니까? 감사!

답변

1

인 이름을 입력하면 SQL Server에 정확하게 수행 할 함수가 있습니다 : quotename().

입력이 128자를 초과하면 함수는 NULL을 반환하는 까다로운 습관을 갖기 때문에주의하십시오. 객체 및/또는 열 이름을 인용 할 때 발생하지 않지만 다른 경우에는 시작될 수 있습니다.