-갑을 계산하고 결과값을 반환하기 위해서 사용 -저장프로시저와의 차이점 ->입력 매개변수만 사용할 수 있고 ->리턴 타입을 반드시 지정해야 함 (필수) -형식) 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');