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

반응형