• 티스토리 홈
  • 프로필사진
    조별하
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
조별하
  • 프로필사진
    조별하
    • 분류 전체보기 (124)
      • 1. 공부 (0)
        • 기술 면접 (0)
      • 2. 웹개발 (7)
        • Java (1)
        • IT 정보 (5)
        • Error 모음 (1)
      • 3. 개인관심 (1)
        • 전자 (1)
      • GITHUB (5)
      • IT 기술 면접 (3)
      • COMPUTER (2)
      • TASK (1)
      • LANGUAGES (20)
        • Python (3)
        • Django (6)
        • Java (7)
        • Node (1)
        • Jsp (2)
        • R (1)
      • 데이터과학 (2)
        • 머신러닝 및 딥러닝 (2)
      • DATABASE (5)
        • Oracle (2)
      • ISSUE (10)
        • Django (4)
        • Drf (2)
        • Javascript (1)
        • Git (1)
      • JAVA 교육 (65)
        • Java (3)
        • Jquery (2)
        • Sql (16)
        • Jdbc (1)
        • Db (2)
        • Jsp (9)
        • myWeb (15)
        • Servlet (4)
        • Spring (12)
        • Crawling (0)
        • Hosting (1)
      • 정보처리산업기사 (1)
      • EDUCATION (2)
        • IoT 서비스 (2)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • 2019/08/06 function 과 trigger
        2019년 08월 06일
        • 조별하
        • 작성자
        • 2019.08.06.:18

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

        [본 수업] 프로시저와 같은 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
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바