database/MSSQL

동적쿼리

란마12 2014. 7. 16. 14:08

DECLARE @sSql NVARCHAR(MAX);

DECLARE @a_sParam2 NVARCHAR(MAX);

SET @a_sParam2 = '''000000010'',''000000011''';

SET @sSql = 'UPDATE TB_TEST SET COL1 = ''1'' WHERE COL2 IN(@sMcodes)';

PRINT @sSql;

PRINT @a_sParam2;

EXEC SP_EXECUTESQL @sSql, N'@sMcodes NVARCHAR(MAX)', @sMcodes = @a_sParam2;


SQL INJECTION등 위험성 때문에 위의 코드는 작동하지 않는다.

결국 동적쿼리 쓰지 않고 파싱해서 임시테이블 생성함수 만들어 사용

UPDATE TB_PPS_PRS SET COL1 = '4', WHERE COL2 IN(SELECT ITEM FROM DBO.DelimitedSplit8K('000000010,000000011', ','))