게으른 개발자의 끄적거림

SQL 매개변수 받는 방법

끄적잉 2024. 3. 12. 21:43
반응형

SQL 매개변수 받는 방법

 

SQL에서 매개변수를 받는 방법에 대해 자세히 설명하고 예시를 들겠습니다. 매개변수는 SQL 쿼리에 동적으로 값을 전달하고 처리하는데 사용됩니다. SQL에서 매개변수를 사용하는 방법은 다양하며, 주로 저장 프로시저, 동적 SQL, 사용자 입력값을 직접 삽입하는 방식이 있습니다.

 

1. **저장 프로시저(Stored Procedure):**

저장 프로시저는 데이터베이스에 미리 정의된 프로시저로, 입력 매개변수를 받아 일련의 작업을 수행합니다. 여기에는 결과를 반환할 수도 있고, 그렇지 않을 수도 있습니다. 예를 들어, 특정 ID의 직원 정보를 반환하는 저장 프로시저는 다음과 같이 정의될 수 있습니다.


CREATE PROCEDURE GetEmployeeByID 
    @EmployeeID INT
AS
BEGIN
    SELECT * FROM Employees WHERE EmployeeID = @EmployeeID;
END;


이 저장 프로시저는 `@EmployeeID`라는 매개변수를 받아 해당하는 직원 정보를 반환합니다. 저장 프로시저를 호출할 때 매개변수를 전달하여 사용합니다.


EXEC GetEmployeeByID @EmployeeID = 123;



2. **동적 SQL(Dynamic SQL):**

동적 SQL은 실행 시에 생성되는 SQL 코드입니다. 이는 사용자 입력이나 조건에 따라 쿼리가 동적으로 변경됩니다. 예를 들어, 동적 SQL을 사용하여 특정 조건에 따라 다른 검색을 수행할 수 있습니다.

 

반응형


DECLARE @sql NVARCHAR(MAX);
DECLARE @EmployeeID INT = 123;

SET @sql = 'SELECT * FROM Employees WHERE EmployeeID = ' + CAST(@EmployeeID AS NVARCHAR);

EXEC sp_executesql @sql;


이 예에서는 `@EmployeeID`라는 매개변수를 사용하여 동적 SQL을 생성하고 실행합니다. 이를 통해 조건에 따라 쿼리가 다르게 실행될 수 있습니다.

3. **사용자 입력값을 직접 삽입:**

이 방법은 보안상 취약하므로 권장되지 않지만, 가장 간단한 방법 중 하나입니다. 사용자 입력 값을 직접 쿼리에 삽입하여 처리합니다. 그러나 이는 SQL Injection 공격에 취약할 수 있습니다.


DECLARE @EmployeeID INT = 123;

SELECT * FROM Employees WHERE EmployeeID = @EmployeeID;


위의 예에서 `@EmployeeID`는 사용자 입력을 받는 매개변수로 사용됩니다. 그러나 이 방법은 보안에 취약할 수 있으므로 신중하게 사용해야 합니다.

매개변수를 받는 방법은 상황에 따라 다르며, 보안과 성능을 고려하여 적절한 방법을 선택해야 합니다. 저장 프로시저는 보안적으로 안전하고 성능이 우수하지만 유연성이 떨어질 수 있습니다. 반면에 동적 SQL은 유연성이 높지만 보안에 취약할 수 있습니다. 따라서 상황에 맞게 적절한 방법을 선택하여 사용해야 합니다.

반응형