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', ','))