프로시저
CREATE [OR REPLACE] PROCEDURE 프로시저명(
파라미터명1 [IN] 자료형, -- IN 모드 :기본값 (생략가능)
파라미터명2 OUT 자료형,
파라미터명3 IN OUT 자료형
)
IS
선언부;
BEGIN
실행부;
END;
-- 실행
EXECUTE/EXEC/CALL 프로시저명
-- 삭제
DROP PROCEDURE 프로시저명
- EXEC 명령어나 PL/SQL 내에서 호출 가능
- SQL문에서는 사용 X
- 반환값 여러개 가능 (OUT 모드)
-- 생성 --
CREATE OR REPLACE PROCEDURE info_prof(
v_profno IN professor.profno%TYPE,
v_name OUT professor.name%TYPE,
v_pay OUT professor.pay%TYPE)
IS
BEGIN
SELECT NAME, pay INTO v_name, v_pay
FROM professor
WHERE profno = v_profno;
END;
-- 실행 --
DECLARE
v_host professor.name%TYPE;
v_money professor.pay%TYPE;
BEGIN
info_prof(1001, v_host, v_money); -- 위치 지정으로 값대입
info_prof(v_profno => 1001, v_name => v_host, v_pay => v_money); -- 이름 지정으로 값대입
dbms_output.put_line('이름 : ' || v_host);
dbms_output.put_line('교수의 급여는 ' || v_money);
END;
● 서브프로그램 내용확인(USER_SOURCE 데이터 사전)
SELECT name, type, line, text
FROM USER_SOURCE;
name : 이름, type : 종류, line : 줄번호 text : 소스 코드
● 서브프로그램 에러확인
SHOW ERRORS;
● 모드
IN | OUT | IN OUT |
값이 서브 프로그램으로 전달 | 서브 프로그램으로부터 반환 | 전달 & 반환 |
형식 파라미터가 상수로 동작 | 초기화 안된 변수 | 초기화 된 변수 |
리터럴, 표현식, 상수, 변수 사용가능 | 변수만 사용가능 | 변수만 사용가능 |
기본값 할당 O | 기본값 할당 X | 기본값 할당 X |