PL/SQL(8)
-
251113 TIL
문제-- [문제17] get_annual_sal 함수를 생성해주세요.SELECT employee_id, salary, commission_pct, salary * 12 + salary * 12 * commission_pct annual_salary_1, salary * 12 + salary * 12 * nvl(commission_pct, 0)commission_pct_annual_salary_2, get_annual_sal(salary, commission_pct) annual_salary_3, get_annual_sal(sal=>salary, comm=>commission_pct) annual_salary_4, get_annual_sal(sal=>salary)..
2025.11.13 -
251112 TIL
문제-- [문제16] 사원번호를 입력값으로 받아서 그 사원의 이름, 급여, 부서이름을 출력하는 프로시저를 생성하세요. -- 단 100번 사원이 입력값으로 들어오면 프로그램은 종료 할 수 있도록 작성해주세요.CREATE OR REPLACE PROCEDURE emp_proc(p_id IN number)IS TYPE rec_type IS RECORD( name employees.last_name%type, sal employees.salary%type, dept_name departments.department_name%type ); v_rec rec_type; eos EXCEPTION;BEGIN IF p_id = 100 THEN R..
2025.11.12 -
251111 TIL
EXCEPTION(예외)프로그램 실행 중에 발생한 PL/SQL 오류오라클에 의해 암시적으로 발생프로그램에 의해 명시적으로 발생시킬 수 있음예외 처리EXCEPTION 키워드로 시작여러 예외 처리기를 사용할 수 있음블록을 종료하기 전 하나의 처리기만 실행WHEN OTHERS THEN 마지막절DECLARE ...BEGIN ...EXCEPTION WHEN no_data_found then ... WHEN too_many_rows then ... WHEN OTHERS THEN ...END;/Predefined Exception(미리 정의된 오라클 서버 오류)오라클 오류 번호에 따른 예외 사항 이름이 생성되어 있음오류 보고 -ORA-01403: no ..
2025.11.11 -
251110 TIL
CURSORSQL문 실행 메모리 영역SELECT문 : PARSE → BIND → EXECUTE → FETCHDML문 : PARSE → BIND → EXECUTE암시적(Implicit) CURSORSELECT … INTO …반드시 1건만 FETCH 해야 함0건 : no_data_found2건 이상 : too_many_rowsDML명시적(Explicit) CURSORSELECT문 수행 시에 여러 개의 행을 FETCH해야 한다면 꼭 명시적 커서를 이용해야 함프로그래머가 커서를 생성, 관리해야 함DECLARE v_name varchar2(30);BEGIN SELECT last_name INTO v_name FROM hr.employees WHERE department_id = 20; ..
2025.11.10 -
251107 TIL
조합 데이터 유형(Cont.)연관 배열(associative array, index by table)2개의 열을 포함하는 조합 데이터 유형key, value 집합으로 구성key : 정수(pls_integer(-2GB ~ 2GB)), 문자열(varchar2(32767(11g), 65536(12c))) 데이터 유형의 primary key(unique, not null)value : 스칼라, 레코드 데이터 유형DECLARE TYPE tab_char_type IS TABLE OF varchar2(10) INDEX BY pls_integer; v_city tab_char_type;BEGIN v_city(1) := '서울'; v_city(2) := '부산'; v_city(3) := '광주..
2025.11.07 -
251106 TIL
SELECT last_name, salary, hire_dateFROM hr.employeesWHERE employee_id = 100;BEGIN SELECT last_name, salary, hire_date FROM hr.employees WHERE employee_id = 100;END;/--PLS-00428: an INTO clause is expected in this SELECT statementPLSQL의 SQL문SELECT 문을 사용하여 데이터베이스에 있는 데이터를 조회DML문을 사용하여 데이터베이스에 있는 데이터를 입력, 수정, 삭제, 병합COMMIT, ROLLBACK, SAVEPOINT 문을 사용하여 트랜잭션을 제어SQL CURSORCURSOR : SQL 문 실행 메모리..
2025.11.06