Database/Oracle PLSQL: 26개의 글
-- 1. 예외처리가 필요한 이유-- 1) 오라클 에러메세지를 사용자의 편의에 따라 출력할 수 있다. -- 2) 프로그램을 수행되게 할 때, 몇가지 오류가 있는 data 때문에 -- 전체 프로그래밍이 실패하는 현상을 방지하기 위해서 필요하다. -- 2. 예외의 종류 3가지 -- 1) 미리 정의 해놓은 예외처리-- 2) 미리 정의하지 않은 예외처리-- 3) 사용자 정의 예외처리 -- 3. 예외 트랩에 대한 함수-- 1) SQLCODE 오류코드에 대한 숫자값 반환-- 2) SQLERRM 오류번호와 연관된 메시지를 반환 ★ 예제 1. 미리 정의해놓은 예외처리를 이용해서 사원번호를 입력하였을 때,-- 해당사원은 없습니다. 라는 메세지를 출력하게 하라. (월급출력) SET SERVEROUTPUT ON;ACCEPT..
-- 1. SET VERIFY OFF : PL/SQL 실행시 메시지를 출력하지 않는 설정 -- 2. 변수이름 지정방법-- 1) 문자로 시작-- 2) 문자 + 숫자 가능 -- 3) 특수문자 $,_,# 포함-- 4) 변수의 길이는 30자 이하 -- 5) 오라클 예약어는 변수명으로 사용할 수 없음 -- 3. 타입설정 방법-- 1) 현재까지 PL/SQL 작성의 문제점 : 컬럼길이를 몰라서 임의로 정해버리는 문제점-- 2) 해결 : %TYPE 속성-- 위와 같이 데이터 타입을 선언하지 않으면, 추후에 데이터 타입을 변경할때 마다 수반하는 작업이 많아진다. -- 4. NUMBER -- 변수 선언 시, NUMBER(7,2)의 의미는 전체 개수 7개, 소수점 개수 2개-- ex) 12345.12 -- 5. 불린변수 선..
1. 익명블럭 ( anonymous PL/SQL block )- 이름이 없는 pl/sql- DB에 이름을 가지고 저장되지 않는 형식- 아래의 pl/sql 종류는 이름을 가지고 db에 저장되는 형식 2. Procedure 3. Function 4. Trigger 5. Package 출처: https://sourceflower.tistory.com/38?category=608037 [소스플로우]
SET SERVEROUTPUT ON;CREATE OR REPLACE PROCEDURE PR_EMP_TEST9(P_DEPT_NO NUMBER) -- CURSOR 명 : EMP_CURSOR -- EMP_CURSOR 에 조건에 맞는 TB_LS_EMP867 테이블에서 가져온 데이터들을 담아준다.IS CURSOR EMP_CURSOR IS SELECT EMP_NO, EMP_ID, EMP_NM, DEPT_NO, SAL FROM TB_LS_EMP867 WHERE DEPT_NO = P_DEPT_NO; BEGIN -- CURSOR OPEN 사용 X, FETCH 사용 X, EMP_RECORD 임의부여 FOR EMP_RECORD IN EMP_CURSOR LOOP DBMS_OUTPUT.PUT_LINE(EMP_RECORD.EMP..
SET SERVEROUTPUT ON;CREATE OR REPLACE PROCEDURE PR_EMP_TEST7(P_DEPT_NO NUMBER) -- CURSOR 명 : EMP_CURSOR -- EMP_CURSOR 에 조건에 맞는 TB_LS_EMP867 테이블에서 가져온 데이터들을 담아준다.IS CURSOR EMP_CURSOR IS SELECT EMP_NO, EMP_ID, EMP_NM, DEPT_NO, SAL FROM TB_LS_EMP867 WHERE DEPT_NO = &P_DEPT_NO; -- 변수를 선언한다. V_EMP_NO NUMBER(8) := 0; V_EMP_ID VARCHAR2(30); V_EMP_NM VARCHAR2(20); V_DEPT_NO NUMBER(4) := 0; V_SAL NUMBER(..
1. BASIC LOOP을 활용하여 EMP745 테이블의 레코드를 업데이트하여라.SET SERVEROUTPUT ON;CREATE OR REPLACE PROCEDURE PR_EMP_TEST5 (P_DEPT_NO NUMBER)IS -- CURSOR 명 : EMP_CURSOR -- EMP_CURSOR 에 조건에 맞는 TB_LS_EMP867 테이블에서 가져온 데이터들을 담아준다. CURSOR EMP_CURSOR IS SELECT EMP_NO, EMP_NM, EMP_ID, DEPT_NO, SAL FROM TB_LS_EMP867 WHERE DEPT_NO = P_DEPT_NO; -- 변수를 선언한다. V_EMP_NO NUMBER(8) := 0; V_EMP_ID VARCHAR2(30); V_EMP_NM VARCHAR2..
-- 조합 데이터 타입의 2가지 종류 -- 1. 레코드 (RECORD) -- 2. 컬렉션 (COLLECTION) -- CURSOR-- 수행하는 SQL문의 결과를 처리하기 위한 메모리영역 -- 1. 암시적 커서: SQL%rowcount와 같은 커서를 말한다. -- 2. 명시적 커서: 메모리를 올려놓고 빈곳에다가 올리고 싶은 데이터를 올린다. -- 2. CURSOR를 사용하지 않고 FOR LOOP을 사용하여 TB_LS_EMP867 테이블에서 레코드를 뽑아봐라 SET SERVEROUTPUT ON; CREATE OR REPLACE PROCEDURE PR_EMP_TEST2(P_DEPT_NO NUMBER) IS -- CURSOR 명 : EMP_CURSOR -- EMP_CURSOR 에 조건에 맞는 TB_LS_EMP8..
---- 조합 데이터 타입의 2가지 종류 -- 1. 레코드 (RECORD) -- 2. 컬렉션 (COLLECTION) -- CURSOR-- 수행하는 SQL문의 결과를 처리하기 위한 메모리영역 -- 1. 암시적 커서: SQL%rowcount와 같은 커서를 말한다. -- 2. 명시적 커서: 메모리를 올려놓고 빈곳에다가 올리고 싶은 데이터를 올린다. 1. CURSOR를 사용하지 않고 FOR LOOP을 사용하여 TB_LS_EMP867 테이블에서 레코드를 뽑아봐라 SET SERVEROUTPUT ON;ACCEPT P_DEPT_NO PROMPT '원하는 부서를 입력하고 FOR..LOOP과 CURSOR를 이용하여 데이터를 추출해보아라.'; DECLARE -- CURSOR 명 : EMP_CURSOR -- EMP_CURSO..
-- EMP_CURSOR%FOUND : 커서에서 데이터가 발견되면 TRUE-- EMP_CURSOR%NOTFOUND : 커서에서 데이터가 발견되지 않으면 TRUE SET SERVEROUTPUT ON;CREATE OR REPLACE PROCEDURE PR_EMP_TEST2(P_DEPT_NO NUMBER)IS -- CURSOR 명 : EMP_CURSOR -- EMP_CURSOR 에 조건에 맞는 TB_LS_EMP867 테이블에서 가져온 데이터들을 담아준다. CURSOR EMP_CURSOR IS SELECT EMP_NO, EMP_NM, EMP_ID, DEPT_NO, SAL FROM TB_LS_EMP867 WHERE DEPT_NO = P_DEPT_NO; -- 변수를 선언한다. V_EMP_NO NUMBER(8) :=..
-- EMP_CURSOR%FOUND : 커서에서 데이터가 발견되면 TRUE-- EMP_CURSOR%NOTFOUND : 커서에서 데이터가 발견되지 않으면 TRUE SET SERVEROUTPUT ON;ACCEPT P_DEPT_NO PROMPT '데이터가 필요한 부서를 입력하시오'; DECLARE -- CURSOR 명 : EMP_CURSOR -- EMP_CURSOR 에 조건에 맞는 TB_LS_EMP867 테이블에서 가져온 데이터들을 담아준다. CURSOR EMP_CURSOR IS SELECT EMP_NO, EMP_ID, EMP_NM, DEPT_NO, SAL FROM TB_LS_EMP867 WHERE DEPT_NO = &P_DEPT_NO; -- 변수를 선언한다. V_EMP_NO NUMBER(8) := 0; V_..