Computer Science/Database
[Database] SQL(3)
aajin126
2023. 4. 14. 03:53
저장 프로시저 (Stored Procedure)
- 대부분의 데이터베이스는 저장 프로시저라는 기능을 제공한다.
- 관계 데이터베이스를 위한 표준 데이터 언어인 SQL에 절차적인 언어의 기능 (IF-THEN, WHILE 루프 등)을 추가하여 확장한 언어이다.
DELIMITER $$
CREATE PROCEDURE 스토어드_프로시저_이름(IN 또는 OUT 매개변수)
BEGIN
-- SQL 프로그래밍 코딩 --
END $$
DELIMITER;
CALL 스토어드_프로시저_이름();
IN 또는 OUT 매개변수 사용법
- IN 입력_매개변수_이름 데이터_형식
- CALL 스토어드_프로시저_이름(전달_값)
- OUT 출력_매개변수_이름 데이터_형식
- CALL 스토어드_프로시저_이름(@변수명)
- SELECT @변수명
DELIMITER $$
CREATE PROCEDURE GetEmployee2(IN Name char(10))
BEGIN
SELECT EMPNAME, EMPNO, DNO
FROM EMPLOYEE
WHERE EMPNAME = Name;
END $$
DELIMITER ;
--EMPNAME이 김상원인 조건을 검색!
CALL GetEmployee2('김상원');
DELIMITER $$
CREATE PROCEDURE GetEmployee3(IN Name char(10), OUT Sal int)
BEGIN
SELECT salary INTO Sal
FROM EMPLOYEE
WHERE EMPNAME = Name;
END $$
DELIMITER ;
CALL GetEmployee3('김상원', @Sal)
SELECT @Sal;
트리거(trigger)
- 명시된 이벤트(INSERT, DELETE, UPDATE)가 발생할 때마다 DBMS가 자동적으로 수행하는, 사용자가 정의하는 문(PROCEDURE)이다.
- 데이터베이스의 무결성을 유지(데이터의 결함이 없도록)하기 위한 일반적이고 강력한 도구이다.
- 테이블 정의 시 표현할 수 없는 기업의 비즈니스 규칙들을 시행하는 역할이다.
- 트리거를 명시하려면 트리거를 활성화시키는 사건인 이벤트, 트리거가 활성화되고 조건이 참일 때 수행되는 문인 동작을 표현해야 한다.
- SQL3 표준에 포함되었으며 대부분의 상용 관계 DBMS에서 제공된다.
DELIMITER //
CREATE TRIGGER testTrg
AFTER DELETE -- 삭제 이벤트 후에 진행
ON EMPLOYEE -- 트리거를 부착할 테이블
FOR EACH ROW
BEGIN
SET @msg = '직원이 삭제됨'; -- 트리거 실행 시 작동되는 코드
END //
DELIMITER ;
--DELETE 이벤트 실행
DELETE FROM EMPLOYEE
WHERE EMPNAME = '김상원';
SELECT @msg;
참고)
Ewha Woman Univ. Database (2023-1. Prof. InKi Lee)