DBMS/PLSQL(13)
-
bind 변수 사용
drop table test purge;create table test(id number,name varchar2(20),day date);--변수 선언 및 데이터 삽입-- 블록 내에서 사용할 변수들을 선언하고 변수를 초기화 후 테이블에 데이터를 삽입한다.var b_id numbervar b_name varchar2(20)var b_day varchar2(30)execute :b_id :=1;execute :b_name :='scott';execute :b_day := '2024-05-24';begin insert into test(id, name, day) values(:b_id,:b_name, to_date(:b_day, 'yyyy-mm-dd'));end;-- 변수 선언var b_id nu..
2024.05.24 -
fetch row 가 2건 이상일 때 오류
ORA-01422 오류는 SELECT INTO 문이 여러 행을 반환하려 할 때 발생한다. INTO 절은 단일 행만 처리할 수 있도록 설계되어있으며 department_id = 20 조건으로 조회하면 해당 부서에 여러 명의 직원이 있을 수 있기 때문에 이 오류가 발생한다. 여러 행을 처리하기 위해서는 CURSOR 또는 FOR LOOP 를 사용할 수 있다.declare cursor c_emp is select last_name, first_name, salary from employees where department_id = 20; v_lname employees.last_name%type; v_fname employees.first_..
2024.05.24 -
PL/SQL 기본 구조
PL/SQL은 SQL 명령어를 통합하여 절차적인 프로그래밍을 가능하게 한다. 1. PL/SQL Block 구조: - 선언부(DECLARE): 변수 선언 등을 포함하며 실행부에서 사용하는 변수는 여기서 반드시 선언되어야 한다. - 실행부(BEGIN): PL/SQL 코드가 실행되는 부분으로, SQL 문장 또는 PL/SQL 문장을 포함할 수 있다. - 예외처리부(EXCEPTION): 예외 처리를 위한 부분으로, 오류 발생 시 처리할 내용을 정의한다. 2. 변수 선언: - DECLARE 섹션에서 변수를 선언하며, 데이터 타입과 함께 변수를 지정할 수 있다. 초기값을 할당할 수도 있다. - 예를 들어, v_id NUMBER(5)는 v_id라는 이름의 5자리 숫자형 변수를 선언하는 것이다. DECLARE ---> ..
2024.04.18 -
예외 처리 PRAGMA
DECLARE E_DUP_EXCEP EXCEPTION; PRAGMA EXCEPTION_INIT(E_DUP_EXCEP, -00001); E_INSERT_EXCEP EXCEPTION; PRAGMA EXCEPTION_INIT(E_INSERT_EXCEP, -01400); V_MAX_DID DEPARTMENTS.DEPARTMENT_ID%TYPE; ERROR_CODE NUMBER; ERROR_MESSAGE VARCHAR2(100); BEGIN SELECT MAX(DEPARTMENT_ID) INTO V_MAX_DID FROM DEPARTMENTS; INSERT INTO DEPARTMENTS (DEPARTMENT_ID, DEPARTMENT_NAME) VALUES (V_MAX_DID, 'IT SUPPORT'); EXCE..
2024.04.14 -
여러개의 행을 한 번에 가져오는 CURSOR LOOP
--부서번호를 입력 후사원 이름 월급 부서 번호 출력 SET SERVEROUTPUT ON DECLARE V_ENAME EMP.ENAME%TYPE; V_SAL EMP.SAL%TYPE; V_DEPTNO EMP.DEPTNO%TYPE; CURSOR EMP_CURSOR IS SELECT ENAME, SAL, DEPTNO FROM EMP WHERE DEPTNO= &P_DEPTNO; BEGIN OPEN EMP_CURSOR; LOOP FETCH EMP_CURSOR INTO V_ENAME, V_SAL, V_DEPTNO; EXIT WHEN EMP_CURSOR%NOTFOUND; DBMS_OUTPUT.PUT_LINE(V_ENAME||' '||V_SAL||' '||V_DEPTNO); END LOOP; CLOSE EMP_CURS..
2024.04.13 -
삽입 정렬 insertion Sort
삽입 정렬 알고리즘은 정렬되지 않은 리스트를 정렬된 부분과 정렬되지 않은 부분으로 나누고, 정렬되지 않은 부분의 요소를 하나씩 가져와 정렬된 부분에 삽입하여 정렬하는 방식으로 동작한다. 첫 번째 요소만이 정렬된 부분이고, 나머지 요소들은 정렬되지 않은 부분으로 정렬되지 않은 부분에서 하나의 요소를 선택하여 정렬된 부분에 삽입한다. 선택된 요소를 적절한 위치에 삽입하기 위해 정렬된 부분을 순회하면서 삽입할 위치를 찾으며 정렬되지 않은 부분이 모두 정렬된 상태가 될 때까지 위의 과정을 반복한다. 삽입 정렬의 시간 복잡도는 최선의 경우 O(n), 평균 및 최악의 경우 O(n^2)이다. 대량의 데이터를 정렬하는데는 효율적이지 않지만, 데이터가 이미 거의 정렬된 상태이거나 작은 크기의 데이터를 정렬할 때는 유용..
2024.03.18