일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- JavaScript
- jpa
- Eclipse
- spring
- Open Source
- Thymeleaf
- JDBC
- Python
- git
- Exception
- MSSQL
- error
- ubuntu
- oracle
- myBatis
- 설정
- PostgreSQL
- 문서
- Tomcat
- Source
- Core Java
- Docker
- IntelliJ
- AJAX
- MySQL
- 오픈소스
- maven
- Spring Boot
- SpringBoot
- STS
- Today
- Total
헤르메스 LIFE
[Oracle] Procedure 예제 본문
CREATE OR REPLACE PROCEDURE USER_PROC (
V_VALUE_1 IN VARCHAR2,
V_VALUE_2 IN VARCHAR2,
V_DEPTNO IN EMP.DEPTNO%TYPE ,
O_ERRORCODE OUT VARCHAR2,
O_ERRORMESG OUT VARCHAR2
)
IS
/*****************************************************************
Program Name : 프로시져명
Description : 설명
Author : 성명
History : 날짜
*****************************************************************/
V_ENAME VARCHAR2(8) := '';
V_USER_NAME VARCHAR2(20) := '';
V_USER_ID VARCHAR2(20) := '';
-- 커서선언
CURSOR CUR_EMP_LIST(P_USER_ID EMP.USER_ID%TYPE)
IS
SELECT *
FROM EMP
WHERE USER_ID = P_USER_ID
;
-- 커서 변수선언
V_EMP_LIST EMP%ROWTYPE;
BEGIN
DBMS_OUTPUT.ENABLE;
-- 오류코드: -20000 ~ -20999
IF P_USER_ID IS NULL THEN
RAISE_APPLICATION_ERROR(-20000, 'P_USER_ID 는 필수입력 항목입니다.');
END IF;
SELECT ENAME
INTO V_ENAME
FROM EMP
WHERE ENAME = '1234'
;
DBMS_OUTPUT.PUT_LINE ('사원명은'||V_ENAME||' 입니다') ;
FOR EMP_LIST IN (
SELECT *
FROM EMP -- 테이블
WHERE JOIN_DATE LIKE '202301%'
) LOOP
V_USER_NAME := EMP_LIST.USER_NAME;
V_USER_ID := EMP_LIST.USER_ID;
END LOOP;
-- 커서오픈
OPEN CUR_EMP_LIST('1234');
-- LOOP
LOOP
FETCH CUR_EMP_LIST INTO V_EMP_LIST;
EXIT WHEN CUR_EMP_LIST%NOTFOUND;
DBMS_OUTPUT.PUT_LINE ('사원명은'||V_EMP_LIST.USER_NAME || ' 입니다') ;
END LOOP;
-- 커서닫기
CLOSE CUR_EMP_LIST;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('해당 사원이 없습니다') ;
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('사원이 두 명 이상입니다') ;
WHEN ZERO_DIVIDE THEN
DBMS_OUTPUT.PUT_LINE('0 으로 나눌 수 없습니다.') ;
WHEN DUP_VAL_ON_INDEX THEN
DBMS_OUTPUT.PUT_LINE('동일한 데이터가 존재합니다.') ;
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('기타오류 SQLCODE :: ' || SQLCODE) ;
DBMS_OUTPUT.PUT_LINE('기타오류 SQLERRM :: ' || SQLERRM) ;
END;
https://hermeslog.tistory.com/287
[Oracle] Function 예제
CREATE OR REPLACE FUNCTION F_GET_DATA_ID ( I_VALLUE_1 VARCHAR2, I_VALLUE_2 VARCHAR2 ) /******************************************************************* PROGRAM NAME : 프로그램명 DESCRIPTION : 설명 AUTHOR : 성명 HISTORY : 날짜 ****************
hermeslog.tistory.com
https://hermeslog.tistory.com/293
[Oracle] PL/SQL 예제
DECLARE V_END_DATE VARCHAR2(8) := ''; V_LOANDATE VARCHAR2(8) := ''; I_END_DATE DATE; I_LOANDATE DATE; BEGIN DBMS_OUTPUT.ENABLE; FOR LOAN_LIST IN ( SELECT * FROM K_TABLE -- 테이블 WHERE ENDDATE NOT IN ('20150531') ) LOOP V_END_DATE := LOAN_LIST.ENDDATE;
hermeslog.tistory.com
https://hermeslog.tistory.com/291
[Oracle] PL/SQL PREDEFINED EXCEPTION - 미리정의된 예약
출처 : http://safitservice.blogspot.jp/2014/01/oracle-plsql-predefined-exception.html 오랜만에 PL/SQL을 하다 보니 예외처르 부분에 대해서 작성하다가 자꾸 책을 찾아 보게 되서 정리된 내용을 블러그에 올려 놓고
hermeslog.tistory.com
'Database' 카테고리의 다른 글
[Tibero] Tibero 관련 쿼리 (0) | 2024.05.21 |
---|---|
[Tibero] java.sql.SQLException: JDBC-5072:Failure converting NUMBER to or from a native type. (0) | 2024.05.17 |
[MariaDB] MariaDB Tool - DBeaver (0) | 2024.05.05 |
[Oracle] Ubuntu Linux 에 SQL Developer 설치 (0) | 2024.04.08 |
[PostgreSQL, MariaDB] 다건 Insert ( Multi Row Insert ) (2) | 2024.02.25 |