새소식

JAVA 교육/Sql

2019/08/06 function 과 trigger

  • -

[전 수업] 프로시저를 이용해서 데이터 값을 조회해 보았다

[본 수업] 프로시저와 같은 function 함수와  trigger를 배워보자


[함수(Function)]

-갑을 계산하고 결과값을 반환하기 위해서 사용
-저장프로시저와의 차이점
    ->입력 매개변수만 사용할 수 있고
    ->리턴 타입을 반드시 지정해야 함 (필수)
-형식)
    create or replace function 함수이름
    매개변수
    return 리턴자료형
    is
        변수선언
    begin
        문장
    end;
    /


1. 문)sungjuk 테이블에서 국어 점수의 평균을 구하시오.

    select round(avg(kor),0)  from sungjuk; --65
    
    --행추가
    insert into sungjuk(sno,uname,kor,eng,mat,addr)
    values (sungjuk_seq.nextval,'이순신',40,60,85,'Busan');
    
    select round(avg(kor),0)  from sungjuk;  --63
    
    --행수정
    update sungjuk set kor=95 where sno=123;
    
    select round(avg(kor),0)  from sungjuk;  --67
    
    --행삭제
    delete from sungjuk where sno=123;
   
    select round(avg(kor),0) from sungjuk;  --65
 이렇게 행이 추가되고 수정,삭제 될때 마다 kor의 평균값이 바뀐다

2. sno= 124 의 국어점수 (40) 을 50 점 추가하는 함수 생성

create or replace function fn_update_kor
    (   v_sno number )
    return number
    is
        v_kor number;
    begin
    update sungjuk set kor=kor+50 where sno=v_sno;
    select kor into v_kor
    from sungjuk where sno=v_sno;
    return v_kor;--인상도니 국어점수(90)
    end;
    /
fn_update_kor 국어점수를 50점 추가하는 함수 생성

 

var korea number;
 execute :korea := fn_update_kor(124);
 print korea;

sqlplus에 서버 접속을 한후,

위의 코드를 입력하면

korea점수를 확인하면 50점이 추가되어있는것을 확인할 수 있다

 

 

 

 

 

 

 

 


[트리거 trigger]

방아쇠,데이터베이스에서의 연쇄적인 동작을 정의함
-insert update delete문이 실행될때 
  묵시적으로 수행되는 프로시저이다 
-형식 
create or replace trigger 트리거 이름 
  before 또는 after 
    트리거이벤트 on 테이블명
declare 
    변수선언; 
begin 
    실행할 명령어; 
end; 
/


1. 콘솔창 출력을 위한 명령어

set serveroutput on;

2. trigger 생성

create or replace trigger kor_trigger
    after 
        insert or update or delete on sungjuk
    declare
        avg_kor number;
    begin 
        select avg(kor) into avg_kor from sungjuk;
        dbms_output.put_line ('국어평균: ' || avg_kor);
        end;

3. trigger 생성 TEST

insert into sungjuk(sno,uname,kor,eng,mat,addr)
    values (sungjuk_seq.nextval,'가을비',90,80,85,'Jeju');
행추가를 하면 trigger 로 생성하였던 이벤트가 발생

 

update sungjuk set kor=95 where sno=125;
행수정 하면 trigger로 생성했던 
'국어점수가 몇점인지 출력하는' 이벤트가 발생

'JAVA 교육 > Sql' 카테고리의 다른 글

2019/09/13 Oracle DB 설치 & 사용자 계정  (0) 2019.09.13
2019/08/07 백업 및 복원  (0) 2019.08.07
2019/08/05 프로시저를 이용한 C.R.U.D  (0) 2019.08.05
2019/08/05 프로시저를 이용  (0) 2019.08.05
2019/07/31 CSV변환  (0) 2019.07.31
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.