[MSSQL] T-SQL에서동적으로SQL작성하고, 실행, 값을 취득하는 방법
MS SQL |
2011. 2. 11. 19:01
MS SQL Server에서 동적으로 SQL을 짜고, 실행하고, 값을 돌려받을 수 있다.
이하의 소스가 그 예로, 동적SQL 속의 변수(@sDate1,@sDate2)에 할당된 값을 외부의 변수(@sOutput1,@sOutput2)에 할당하고 있다.
declare @sSQL nvarchar(max);
declare @sParam nvarchar(max);
declare @sOutput1 char(8);
declare @sOutput2 char(10);
set @sSQL = N'select @sDate1 = convert(char(8),getdate(),112)'
set @sSQL = @sSQL + N',@sDate2 = convert(char(10),getdate(),111)'
set @sParam = N'@sDate1 char(8) OUTPUT';
set @sParam = @sParam + N',@sDate2 char(10) OUTPUT';
execute sp_executesql @sSQL, @sParam
, @sDate1 = @sOutput1 OUTPUT
, @sDate2 = @sOutput2 OUTPUT
select @sOutput1, @sOutput2
→실행결과
20110210 2011/02/10
예에서는 1행의 값을 돌려주기에 문제없지만, 북수행의 결과를 돌려줄 경우엔 최종행의 값이 얻어지게 된다.
오라클에서는 에러가 나지만, MS SQL Server에서는 에러는 일어나지 않는다.