저장 프로 세 스 와 저장 함 수 는 데이터베이스 에 저 장 된 모든 사용자 프로그램 이 호출 할 수 있 는 서브루틴 을 저장 프로 세 스,저장 함수 라 고 합 니 다.저장 프로 세 스 가 반환 값 이 없습니다.기억 함수 에 반환 값 이 있 습 니 다. 저장 프로시저 생 성 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;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: