Intro
안녕하세요! Plitche(플리체)입니다. :P
MSSQL(마이크로소프트 SQL 서버)의 저장 프로시저(Stored Procedure)는 데이터베이스 내에 미리 정의된 프로그램 단위입니다. 저장 프로시저는 SQL 쿼리와 프로그래밍 로직을 조합하여 데이터베이스 작업을 수행하는 데 사용됩니다.
- 간단 생성 방법
CREATE PROCEDURE GetCustomer
@CustomerId INT
AS
BEGIN
SELECT * FROM Customers WHERE CustomerId = @CustomerId
END
스토어드 프로시저는 일련의 SQL 문과 프로그래밍 문장으로 구성됩니다. 예를 들어, 위는 고객 정보를 검색하는 스토어드 프로시저의 간단한 예시입니다.
매개변수는 @CustomerId이며 GetCustomer이라는 프로시저를 호출한 결과로 SELECT 쿼리의 결과가 반환됩니다.
저장 프로시저(Stored Procedure)의 장점
- 성능 향상: 데이터베이스 서버에 미리 컴파일되고 최적화되어 있으므로, 반복적인 작업을 수행할 때 일반 SQL 쿼리보다 더 빠른 실행 속도를 제공할 수 있습니다.
- 재사용성: 여러 애플리케이션에서 공유하여 호출할 수 있습니다. 이를 통해 코드의 재사용성이 높아지며, 유지보수 및 관리가 용이해집니다.
- 보안성: 데이터베이스의 특정 작업에 대한 접근 권한을 부여할 수 있으므로, 데이터의 보안을 강화할 수 있습니다. 외부 애플리케이션이 직접 데이터베이스에 접근하는 것보다 스토어드 프로시저를 통해 데이터에 접근하는 것이 안전합니다.
- 비즈니스 로직 분리: 데이터베이스에서 비즈니스 로직을 분리할 수 있습니다. 이는 애플리케이션 개발자가 데이터베이스 로직에 집중하지 않고도 애플리케이션을 개발할 수 있도록 도와줍니다.
저장 프로시저(Stored Procedure)의 호출방법
1. EXECUTE 문을 사용하여 호출
EXECUTE GetCustomer @CustomerId = 1
위의 예시에서 GetCustomer 스토어드 프로시저를 호출하고 @CustomerId 매개변수에 1을 전달합니다.
2. EXEC 문을 사용하여 호출
EXEC GetCustomer 1
EXECUTE 문의 축약된 형태로, 스토어드 프로시저를 호출하고 매개변수를 전달합니다.
예시
저장 프로시저(Stored Procedure)는 복잡한 로직을 포함할 수 있습니다. 조건문, 반복문, 변수, 트랜잭션 등을 사용하여 데이터베이스 작업을 수행할 수 있습니다. 예를 들어, 스토어드 프로시저 내에서 다음과 같은 작업을 수행할 수 있습니다.
CREATE PROCEDURE UpdateCustomer
@CustomerId INT,
@FirstName NVARCHAR(50),
@LastName NVARCHAR(50)
AS
BEGIN
-- 트랜잭션 시작
BEGIN TRANSACTION
-- 고객 정보 업데이트
UPDATE Customers
SET FirstName = @FirstName, LastName = @LastName
WHERE CustomerId = @CustomerId
-- 로그 테이블에 변경 이력 기록
INSERT INTO CustomerLog (CustomerId, LogDate, Action)
VALUES (@CustomerId, GETDATE(), 'Update')
-- 트랜잭션 커밋
COMMIT TRANSACTION
END
위의 예시에서는 UpdateCustomer 스토어드 프로시저를 생성하여 고객 정보를 업데이트하는 작업을 수행합니다. 트랜잭션을 사용하여 업데이트와 로그 기록이 원자적(atomic)으로 수행되도록 보장합니다.
스토어드 프로시저는 데이터베이스의 유지보수 및 성능 향상에 도움을 주는 강력한 도구입니다. 이를 통해 데이터베이스 작업을 표준화하고 중복 코드를 피할 수 있으며, 보안과 성능을 최적화할 수 있습니다.
'DB > MSSQL' 카테고리의 다른 글
[MSSQL] 문자열 자르는 3가지 방법(substring, left/right, string_split) (2) | 2023.05.30 |
---|