안녕하세요. SQLER의 코난 김대우입니다.
이번 강좌에서는, 8-3. 저장 프로시저 - 매개변수(파라미터)를 진행 하겠습니다.
SQLER에서 진행되는, 챗GPT와 함께 배우는 SQL Server 강좌 목록
이번에 진행할 강좌는 저장 프로시저 매개변수(파라미터 - Parameter)입니다.
TL;DR
저장 프로시저 파라미터 강좌입니다. 저장 프로시저에서 일반 함수처럼, 파라미터를 적용하는 방법을 소개합니다. 데이터 삽입 및 수정을 파라미터를 활용하여 수행하는 방법도 설명합니다.
SQL Server 공식 문서는 Parameter의 번역인 매개변수이지만, 국내 현업에서 더 많이 사용되는 파라미터로 내용을 진행합니다.
프로그래밍 언어의 함수처럼, 저장 프로시저 역시 파라미터를 이용합니다.
일반적으로 사용되는 SQL 쿼리를 생각해 보겠습니다.
SELECT 컬럼 FROM 테이블 WHERE 컬럼 = 비교값 |
주로, 이렇게 실행합니다.
하지만 지금까지 진행한 저장 프로시저는 위와 같은 비교값 파라미터를 받을 수 없는 저장 프로시저만 생성하고 실행했습니다. 이제 파라미터를 받아 저장 프로시저의 기능을 확장해 보도록 하겠습니다.
저장 프로시저 파라미터
-- 저장 프로시저 생성 CREATE PROC pEmployeeDisp @emp_num INT -- 파라미터 입력 AS SELECT emp_num, emp_name, email FROM Employee WHERE emp_num = @emp_num; -- 파라미터를 WHERE 조건에 적용 GO -- 저장 프로시저에 파라미터 실행 EXEC pEmployeeDisp 2; GO EXEC pEmployeeDisp 3; GO
지난 강좌에서 생성한 저장 프로시저와 유사한 프로시저를 생성합니다. 다른 점은 이렇게 파라미터로 직원번호(emp_num)를 받아서, 해당 직원번호를 가진 직원의 정보를 출력합니다.
직원 번호가 2인 손석구 님과 3번인 박은빈 님이 파라미터에 따라 출력됩니다.
저장 프로시저 - 문자열 파라미터
숫자형 뿐만 아니라, 문자열형, datetime형 등 다양한 형식을 파라미터로 넘기고 저장 프로시저 구문에서 사용할 수 있습니다.
-- 저장 프로시저 생성 CREATE PROC pEmployeeDispEmail @email NVARCHAR(15) -- 문자열 이메일 파라미터 입력 AS SELECT emp_num, emp_name, email FROM Employee WHERE email like @email; -- 파라미터를 WHERE 조건에 적용 GO -- 저장 프로시저에 문자열 파라미터 실행 EXEC pEmployeeDispEmail N'peb@example.com'; GO EXEC pEmployeeDispEmail N'ssk@example.com'; GO -- ssk로 시작하는 문자열 검색 EXEC pEmployeeDispEmail N'ssk%'; GO
이렇게 문자열을 저장 프로시저 파라미터로 넣을 수도 있습니다.
저장 프로시저 - 데이터 삽입
저장 프로시저로 데이터 삽입이나 수정도 가능합니다.
-- INSERT 저장 프로시저 생성 CREATE PROC pEmployeeIns @emp_num INT , @emp_login_pwd NVARCHAR(15) , @emp_name NVARCHAR(10) , @email NVARCHAR(15) , @emp_salary BIGINT AS INSERT INTO Employee(emp_num, emp_login_pwd, emp_name, email, emp_salary) VALUES(@emp_num, @emp_login_pwd, @emp_name, @email, @emp_salary); GO -- 저장 프로시저로 INSERT 수행 EXEC pEmployeeIns 4, N'password1', N'김우빈', N'kwb@example.com', 120000000; GO SELECT * FROM Employee GO
INSERT 저장 프로시저 역시 어렵지 않습니다. 입력할 값을 파라미터로 받고, INSERT 구문의 VALUE에 지정하면 됩니다.
저장 프로시저 - 데이터 UPDATE
-- UPDATE 저장 프로시저 생성 CREATE PROC pEmployeeUdt @emp_num INT , @emp_salary BIGINT AS UPDATE Employee SET emp_salary = @emp_salary WHERE emp_num = @emp_num; GO -- 직원 번호가 4번인 직원의 연봉을 130000000으로 UPDATE EXEC pEmployeeUdt 4, 130000000; GO SELECT * FROM Employee WHERE emp_num = 4; GO
UPDATE도 같습니다. 파라미터로 필요한 정보를 받아 업데이트하면 됩니다.
SQL 강좌 책 구매
강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다.