무회blog

DB: 절차형 SQL (프로시저[PL/SQL], 트리거, 사용자 함수정의) 본문

DB

DB: 절차형 SQL (프로시저[PL/SQL], 트리거, 사용자 함수정의)

최무회 2021. 2. 23. 06:10

절차형 SQL 에는 (프로시저, 트리거, 사용자 함수정의) 3가지가 있다 . 

프로시저 : 

------------------------------------------------
DECLAER : 선언할 시저명(파라미터 타입) 
지역변수 OR IS 
BEGIN : 시작
 	CONTROL : 조건문 혹은 반복문 
 	DML OR DCL : 조작어 혹은 제어어 기재 
 	EXCEPTION : 예외처리 기재 
 	TRANSACTION : 트랜잭션 처리 방식 기재 
    
END: 종결 

실행:  EXECUTE 시저명
삭제: DROP PROCEDURE 시저명 (지정 프로시저 삭제)
------------------------------------------------

예: 
CREATE OR REPLACE PROCEDURE TEST001(param varchar2)
 IS 
    BEGIN 

     SELECT * FROM TEST_TABLE
        WHERE TEST_TABLE.NAME = param; 
     EXCEPTION 
        WHEN PROGRAM_ERROR THEN 
            ROLLBACK;      
     COMMIT;
 
END;


실행: 
 EXECUTE TEST001('홍길동'); 
 EXEC TEST001('홍길동'); 
 CALL TEST001('홍길동'); 
 
------------------------------------------------

 

트리거: 

예: 
------------------------------------------------
CREATE OR REPLACE TRIGGER TRIGGER_TEST_NAME BEFORE INSERT ON TEST_TABLE
REFERENCING NEW AS new_test_table
FOR EACH ROW
WHEN (new_test_table.NAME IS NULL)

BEGIN 
	:new_test_table.NAME = 'HONGGILDONG';
END;


실행: 
	INSERT INTO TEST_TABLE id, dept VALUES(878056, '개발부');
    
삭제: 
	DROP TRIGGER TRIGGER_TEST_NAME;
------------------------------------------------

	

사용자 함수: 

예: 
------------------------------------------------
CREATE FUNCTION GET_SEX(param VARCHAR2)
RETURN VARCHAR2
IS
BEGIN 
	IF param = '홍길동' THEN
    	RETURN '남'
    ELSE 
    	RETURN '여'
    END IF;    
END;

실행: 
	SELECT id, GET_SEX(name) FROM TEST_TABLE;
    
삭제: 
	DROP FUNCTION GET_SEX;
------------------------------------------------
Comments