Programming/데이터베이스
[MSSQL] sp_executesql을 활용한 동적쿼리 실행하기
cbw1030
2021. 7. 18. 15:45
반응형
BEGIN
DECLARE @result INT;
DECLARE @num1 INT = 100;
DECLARE @num2 INT = 200;
DECLARE @sql_query NVARCHAR(MAX);
DECLARE @param NVARCHAR(MAX);
SET @sql_query = N'SELECT @temp_result = ' + convert(varchar, @num1) + ' + ' + convert(varchar, @num2);
SET @param = N'@temp_result FLOAT OUTPUT';
EXEC sp_executesql @sql_query, @param, @temp_result = @result OUTPUT;
END
주의할 점
1. sp_executesql은 VARCHAR가 아닌 NVARCHAR를 요구한다.
2. EXEC sp_executesql 부분에서 @sql_query 쿼리를 실행하여 리턴 값을 @result에 넣어야 한다.
그런데 @temp_result = @result OUTPUT; 은 @temp_result 변수에다가 @result의 값을 대입하는 것처럼 보인다.
sp_executesql에서는 위의 코드를 @result 변수에 @sql_query를 실행하여 얻은 리턴 값인 @temp_result를 대입한다라고 해석해야 한다.
참고
https://itteamb.blogspot.com/2020/03/mssql-exec-exec-spexecutesql.html
반응형