create or replace PROCEDURE 프로시저명
(
v_kind IN STRING,
v_val IN INTEGER,
v_th IN NUMBER,
v_msg OUT NOCOPY STRING, -- 메세지
-- 파라미터: 변수와 똑같이 일시적으로 값 저장.
-- 실행환경과 프로그램 사이에서 값을 주고 받는 역할
)
IS -- PL/SQL 의 블록을 시작함.
* 로컬(지역) 변수는 IS ~ BEGIN 사이에 선언lo_msg_code NUMBER(1) := 0;
lo_nowTime DATE := SYSDATE;
lo_th_code NUMBER(9,3) := to_number(v_th); -- IN 파라미터 인자값으로 로컬변수 초기화
-- 레코드 테이블 선언
TYPE TABLE_REC IS RECORD
(
VA_CCP_MIN 테이블명.VA_CCP_MIN%TYPE
,VA_CCP_MAX 테이블명.VA_CCP_MAX%TYPE
);
VA100 TABLE_REC; -- 레코드테이블 참조변수 VA100선언(나중에 VA100으로 참조)
ERR_HANDLER EXCEPTION; -- Exception핸들러 ERR_HANDLER 선언
BEGIN -- PL/SQL 실행문 시작SELECT VA_CCP_MIN, VA_CCP_MAX
INTO VA100 -- 위에서 선언한 레코드 테이블 참조변수
FROM 테이블명
WHERE VA_KIND = v_kind; -- 인자로 들어온 v_kind가 테이블값과 일치하면
if(v_val = 444444 and substr(v_kind, 4, 1) = 0) then
v_msg := 'success';
else
v_msg := 'fail';
end if;if v_th <> null then -- 인자로 들어온 v_th가 null이 아닐경우
v_msg := 'TH';
if((VA100.V_CCP_MAX <= v_th) or
(VA100.V_CCP_MIN >= v_th)) then
v_ccp_yn := 'Y';
end if;
end if;
-- 레코드값에 저장되있는 허용한계치 MAX값보다 파라미터로 넘어온
-- 값이 높거나 허용한계치 MIN값보다 작을경우 v_ccp_yn := 'Y'; 로 변경한다.
EXCEPTION -- 오라클내부에 미리 포함되있는 Exception이나 프로시저에서 정의한 Exception사용
WHEN ERR_HANDLER THEN
SP_ERR_LOG_TEMP(파라미터 변수들); -- 프로시저 호출
WHEN NO_DATA_FOUND THEN
--psr_return_cd := 1200;
--psr_msg := '데이터 없음.';
SP_ERR_LOG_TEMP(파라미터 변수들); -- 프로시저 호출
END; -- 프로시저 종료
'Study > Oracle' 카테고리의 다른 글
Oracle : Stored Procedure 간단한 예제 (0) | 2012.08.13 |
---|---|
Oracle : PL/SQL 강좌 pdf 자료 (0) | 2012.08.07 |
오라클 프로시저 처음부터 끝까지 예제 (0) | 2012.08.06 |
Oracle : 열을 행으로 변환 (max 함수) (0) | 2012.07.24 |
Oracle : 시퀀스 생성,조회,삭제 (0) | 2012.07.16 |