Oracle 에서 데이터베이스 저장 과정 과 저장 함수 에 대한 사용

저장 프로 세 스 와 저장 함 수 는 데이터베이스 에 저 장 된 모든 사용자 프로그램 이 호출 할 수 있 는 서브루틴 을 저장 프로 세 스,저장 함수 라 고 합 니 다.저장 프로 세 스 가 반환 값 이 없습니다.기억 함수 에 반환 값 이 있 습 니 다.  저장 프로시저 생 성      CREATE PROCEDURE 명령 으로 저장 프로 세 스 와 저장 함 수 를 만 듭 니 다.      문법:create[or replace]프로 세 스 이름(매개 변수 목록)AS        PLSQL 서브루틴;  저장 프로 세 스 예시:지 정 된 직원 을 위해 원래 임금 의 10%를 받 는 임금 /*지 정 된 직원 을 위해 원래 의 임금 에 10%의 임금 을 올 리 고 임금 전과 임금 후의 임금*/SQL>create or replace procedure raiseSalary(empid in number)를 인쇄 합 니 다.    as    pSal emp.sal%type;--직원 의 현재 임금 을 보존 하 다.    이 직원 의 임금 조회    select sal into pSal from emp where empno=empid;--이 직원 에 게 임금 을 올리다.    update emp set sal = sal*1.1 where empno=empid;--임금 인상 전후의 임금 을 인쇄 하 다.    dbms_output.put_line('직원 번호:'|empid||'임금 인상 전   ' || psal||'임금 인상 후'|psal*1.1);    end; 1  /Procedure created--저장 프로 세 스 호출-방법 1 SQL>set server output onSQL>exec raisesalary(7369);직원 번호:7369 임금 인상 전 800 임금 인상 후 880 방법 2    set serveroutput onbegin raisesalary(7369);end;/PL/SQL procedure successfully completed       기억 함수      함수(Function)는 매개 변 수 를 가지 고 계산 값 을 되 돌려 주 는 이름 의 저장 프로그램 입 니 다.함수 와 프로 세 스 의 구 조 는 유사 하지만 함수 값 을 되 돌려 주 는 RETURN 자구 가 있어 야 합 니 다.함수 설명 은 함수 명,결과 값 의 유형,그리고 매개 변수 유형 등 을 지정 해 야 합 니 다.     저장 함 수 를 만 드 는 문법:CREATE[OR REPLACE]FUNCTION 함수 명(매개 변수 목록)RETURN 함수 값 형식 ASPLSQL 서브루틴; 예:모 직원 의 연수 입 을 조회 하 다.SQL> /**/    /*     모 직공 의 총수입 을 조회 하 다    */    create or replace function queryEmpSalary(empid in number)    return number   as    pSal number; --직원 의 임금 을 저장 할 변 수 를 정의 합 니 다.    pComm number; --직원 의 보 너 스 를 저장 할 변 수 를 정의 합 니 다.   begin   select sal,comm into psal,pcomm from emp where empno = empid;   return psal*12+nvl(pcomm,0);   end;   /Function created   l   함수 호출 SQL>declare    v_sal number;    begin    v_sal:=queryEmpSalary(7934);    dbms_output.put_line('salary is:'|| v_sal);    end;    /salary is:15600PL/SQL procedure successfully completedSQL> begin    dbms_output.put_line('salary is:'|| queryEmpSalary(7934));    end;    /salary is:15600PL/SQL procedure successfully completed        트리거       데이터베이스 트리거 는 표 와 연 결 된 PL/SQL 프로그램 입 니 다.특정한 데이터 조작 문(Insert,update,delete)이 지정 한 표 에서 보 낼 때마다 Oracle 은 트리거 에서 정 의 된 구문 순 서 를 자동 으로 실행 합 니 다.       트리거 종류         구문 트리거        지정 한 조작 문 구 를 조작 하기 전이 나 그 후에 한 번 실행 합 니 다.이 문 구 는 몇 줄 에 영향 을 주 든 간 에.         행 트리거(FOR EACH ROW)        촉발 문 작용 의 모든 기록 이 촉발 되 었 다.행 트리거 에서 old 와 new 위조 기록 변 수 를 사용 하여 값 을 식별 하 는 상태 입 니 다.      트리거 CREATE 만 들 기  [or REPLACE]TRIGGER 트리거 이름   {BEFORE | AFTER}   {DELETE|INSERT|UPDATE[of 열명]}   ON  시계   [For EACH ROW[WHEN(조건)]]   PLSQL 블록       예제 1:비 근무 시간 을 데이터베이스 에 데이터 삽입 제한 SQL>create or replace    trigger securityEmp    before insert on emp    declare    begin    if to_char(sysdate,'day')in('목요일','토요일','일요일')    or to_number(to_char(sysdate,'hh24'))not between 8 and 18 then    raise_application_error(-2001,'비 근무 시간 에 데 이 터 를 삽입 할 수 없습니다.');    end if;   end;   /Trigger created 트리거 와 위조 기록 변수의 값
트리거 문
:old
:new
Insert
모든 필드 가 비어 있 음(null)
삽입 할 데이터
Update
이전 줄 의 값 업데이트
업데이트 후 값
delete
이전 줄 의 값 삭제
모든 필드 가 비어 있 음(null)
예제 2:데이터 확인(emp 표 에서 sal 의 수정 값 이 원래 값 보다 낮 지 않 음 검사)SQL>create or replace trigger checkSal    before update of sal on emp    for each row    declare    begin    if :new.sal<:old.sal then    raise_application_error(-2001,'업데이트 후의 월급 이 업데이트 전보 다 적다');    end if;    end;   /Trigger created 실행 후 결과:SQL>update emp set sal=260 where empno=7499;update emp set sal=260 where empno=7499 ORA-20001:업데이트 후 월급 이 업데이트 전보 다 작 음 ORA-06512:"SCOTT.CHECKSAL",line 4ORA-04088:트리거'SCOTT.CHECKSAL'실행 중 오류 가 발생 했 습 니 다.       트리거 총결산      트리거         데이터 확인         복잡 한 안전성 검 사 를 실시 합 니 다.         감사,추적 표 에서 한 데이터 조작 등      트리거,프로 세 스 및 함수 조회         Select * from user_triggers;•         Select * from user_source;

좋은 웹페이지 즐겨찾기