오라클 ---- 저장 프로 시저 및 함수

저장 프로 시저
저장 프로세스 모델 매개 변수는 OUT IN, OUT IN을 포함한다.

(기본 매개 변수 모드) :에만 매개 변수를 읽어 매개 변수 역할이 변수를 연주하고,이 매개 변수를 변경할 수 없습니다 프로 시저 호출을 저장하지 않을 경우, 인수 값이 매개 변수에 전달을 나타냅니다. 매개 변수의 변수 또는 표현 될 수있다.
OUT : 저장 프로 시저를 호출 할 때를 나타내는 상기 인자 값은 무시되고 매개 변수가 초기화 PL / SQL 변수 작용, 초기 파라미터 값은 NULL 인, 저장 프로 시저 호출의 종료 후에, 읽기 / 쓰기 작업을 읽을 수 매개 변수 값은 인수 주어진다. OUT 파라미터 만 상수 또는 발현하지 가변 될 수있다.
저장 프로 시저를 호출 할 때를 나타내는 IN OUT 매개 변수는 매개 변수 값으로 전달된다. 매개 변수는 초기화 된 PL / SQL 변수, 읽기 및 쓰기를 역할을합니다. OUT 모드 매개 변수, 상수 또는 발현되지 않을 수있다.
매개 변수가 경우에만 프로그램이 인수에 전달 일반적으로 유일한 매개 변수 값을 종료 할 때 OUT 모드에서는 OUT 사용합니다.
예를 들면 :

생성 또는 교체 절차 proc_divide
(OUT 번호, OUT 번호에 NUM2에 NUM1) 인
R1 번호;
R2 번호,
선두
R1을 다음 TRUNC (NUM1 / NUM2는) =;
R2 = MOD (NUM1, NUM2)
NUM1 = R1;
NUM2 = R2;

예외
때 다음 ZERO_DIVIDE
DBMS_OUTPUT.PUT_LINE ( '분모를 분할하는 것은 제로가 될 수 없습니다');
하면 다음 기타
DBMS_OUTPUT.PUT_LINE ( '오류 실행 커서를 사용하여!');
최종 proc_divide,

SERVEROUTPUT ON SET
선언
N1의 수 : & = N1,
N2 수있다 : N2 =;
선두
proc_divide (N1, N2)
DBMS_OUTPUT.PUT_LINE ( '두 숫자의 분할의 결과'|| N1)
DBMS_OUTPUT.PUT_LINE ( '모듈로 결과가, 「| | N2)
끝은,
기능
함수 표시를 리턴하는 것을 제외하고 (1), 저장 프로 시저 유사한 기능을 만들기.

(2) 제작 과정에서 기능 키를 선언하지 않았다, 오히려 또는 키워드 대신으로 사용할 수 있습니다.

리턴 데이터 유형 : (3) 함수는 리턴한다.

(4) 함수는 일반적으로 DML (데이터 조작 언어 - 삽입, 삭제, 갱신) 수행되지 않습니다 작업.

 

저장 프로 시저 호출 기능 : 예를 들어,

- 기능 increaseSalary ()
함수 increaseSalary (번호에 theIncome) VARCHAR2를 반환 생성 또는 교체
AS
theMessage VARCHAR2 (50)
선두
theIncome <= 4000 다음 IF
theMessage : = '저소득 증가 임금 % 10'
ELSIF theIncome <= 그때 8000
theMessage = '. 저소득 증가 임금 % 5';
ELSIF theIncome <= 20000 다음
theMessage = 소득 대체로 증가 임금 % 2 ';
다른
theMessage ='높은 수입 1 %, 급여 증가 ';
최종면;
theMessage를 반환;
끝;
- 저장 프로 시저
를 만들거나 절차 getEmpInfo 교체
(OUT이 theID 타입 %를 employees.employee_id,
theName %의 employees.first_name을 OUT 유형을
theSalary % employees.salary OUT 형,
theMessage OUT VARCHAR2)
있다
시작
선택 employee_id입니다, FIRST_NAME, 급여, increaseSalary (급여)
theId, theName, theSalary, theMessage로
직원들의
경우 employee_id입니다 = theId;

예외
때 NO_DATA_FOUND 다음
DBMS_OUTPUT.PUT_LINE ( '没有该员工信息');
종료;


SERVEROUTPUT에 설정;
선언
theId %가 유형 employees.employee_id : = theId;
theName employees.first_name %의 유형;
theSalary employees.salary % 유형;
theMessage VARCHAR2 (50);
시작
输入员工아이디 -; getEmpInfo (theId, theName, theSalary, theMessage)
|| theId || '的员工,名字为'|| theName 'ID为'DBMS_OUTPUT.PUT_LINE을 (
|| ',收入为'|| theSalary || ','|| theMessage);
종료;

추천

출처www.cnblogs.com/hyhy904/p/10992432.html