PL(Procedural Language) -> 절차적인 언어를 뜻함 ex)C,C++,Java(객체지향이긴한데 절차적인 부분도 있음)
PL/SQL 이란?
1 .오라클에서 절차지향적인 프로그래밍이 가능하도록 절차지향적언어를 제공함
2. 저장모듈(PL/SQL문장을 DB서버에 저장해서 사용자와 애플리케이션 사이에서 공유할수 있도록 만든 프로그램)개발
3. 오라클의 저장모듈에는 Procedure,User Defined Function,Tirgger 있음
<프로시저 사용법>
1.update_sal 프로시저는 사번과 인상될 급여를 입력받아 해당사번의 급여를 인상시킴
create or replace Procedure update_sal(
/* IN Parameter */
empno_in IN number, -- IN(파라미터가 프로시저로 들어온다라는 뜻) ,NUMBER(데이터타입)
sal_in IN number
)
IS
BEGIN
Update emp
Set sal = sal + sal_in
where empno = empno_in;
END update_sal;
2.EXECUTE 문을 이용해 프로시저를 실행 한다. (7369 사번의 급여를 2000 인상함)
execute update_sal(7369,2000);
<사용자 정의함수 (특정 작업을 수행하고 수행결과값을 반드시 리턴함) >
1. 음수가 입력되면 양수로 바꾸는 사용자 정의함수 생성
create or replace Function d_ABS
(v_input in number)
return NUMBER
IS
v_return number := 0; -- return 값을 받아줄 변수(v_return)선언
BEGIN
if v_input<0 then -- 음수가 입력될경우
v_return := v_input * -1;
ELSIF v_input is null then -- null이 입력될경우( v_input = null 이렇게 쓰면 null을 인식못함)
v_return := 99999;
else
v_return := v_input;
end if;
RETURN v_return;
END;
/
2.사용자 정의함수(d_ABS) 사용
select comm,d_ABS(comm-2000) from emp;
<Tigger 사용법>
Trigger 란??
-> Insert,update,delete같은 어떤 이벤트가 발생후 실행되는 프로시저
-> Table과는 별도로 Datebase에 저장됨
-> View관해서 트리거를 정의할수 없고 오직 Table에 관해서 트리거 적용이가능
-> 트리거 내부에 commit,rollback 사용이 불가능함
Trigger 종류)
1.DML 트리거 (select에 의해서는 트리거실행이 불가능)
2.DDL 트리거
예제) 쇼핑몰에 해당주문이 결제가 될때마다 일자별 상품별로 판매수량과 판매금액을 집계하는 트리거생성
프로시저와 트리거의 차이점(***)
-> 프로시저는 BEGIN ~ END 사이에 COMMIT,ROLLBACK 같은 트랜잭션 명령어를 사용할수 있는 반면 트리거는 사용이 불가능함
'데이터베이스' 카테고리의 다른 글
정규화 (0) | 2021.03.22 |
---|---|
트랜잭션 (0) | 2021.03.19 |
스토어드 프로그램이란? (0) | 2020.12.23 |
MySQL 완전삭제하기 (0) | 2020.06.17 |
MySQL cmd창에서 실행하기 (0) | 2020.06.17 |