개발햄비

[DB]PL/SQL 프로시저 기초-기본 문법 3정리(%rowtype) 본문

개발/DB

[DB]PL/SQL 프로시저 기초-기본 문법 3정리(%rowtype)

개발햄 2019. 7. 2. 21:13

%ROWTYPE

  1. 테이블이나 뷰 내부의 컬럼 데이터 형 , 크기 , 속성을 그대로 사용할 수 있다.
  2. 테이블이름%ROWTYPE ; 으로 사용
  3. 지정된 테이블의 구조와 같은 변수 구조를 선언 할 수 있다.
  4. DB컬럼의 데이터타입, 컬럼의 수 등등 알기 어려울 때 쓰면 편하다
  5. 테이블의 컬럼이 변경돼도 수정할 필요 없다.

%ROWTYPE 예제

create or replace PROCEDURE ROW_TYPE_TEST 
IS

   test_emp emp%ROWTYPE;

BEGIN
    SELECT empno, ename, sal
    INTO test_emp.empno, test_emp.ename, test_emp.sal
    FROM emp
    WHERE empno = 7369;

    DBMS_OUTPUT.PUT_LINE('empno: ' || test_emp.empno);
    DBMS_OUTPUT.PUT_LINE('ename: ' || test_emp.ename);
    DBMS_OUTPUT.PUT_LINE('sal: ' || test_emp.sal);
END;

---=----출력---------

empno: 7369
ename: SMITH
sal: 800

Table 문법

--예제
TYPE emp_Table IS TABLE OF VARCHAR(30)
INDEX OF BINATY_INTEGER;

--emp_Table 테이블 타입 -> emp_Table_li 변수에 넣기
emp_Table_li emp_Table

Table 예제

create or replace PROCEDURE table_TEST 
IS

   TYPE empno_table IS TABLE OF emp.empno%TYPE
   INDEX BY BINARY_INTEGER;

    TYPE ename_table IS TABLE OF emp.ename%TYPE
   INDEX BY BINARY_INTEGER;

    TYPE sal_table IS TABLE OF emp.sal%TYPE
   INDEX BY BINARY_INTEGER;

    --table타입으로 변수에 저장

    empno_col empno_table;
    ename_col ename_table;
    sal_col sal_table;

    i BINARY_INTEGER := 0;
BEGIN

    FOR emp_list IN ( SELECT empno, ename, sal FROM emp) LOOP
        i := i+1;
        empno_col(i) := emp_list.empno;
        ename_col(i) := emp_list.ename;
        sal_col(i) := emp_list.sal;

    END LOOP;

    FOR cnt IN 1..i LOOP
        DBMS_OUTPUT.PUT_LINE(' empno: ' || empno_col(cnt));
        DBMS_OUTPUT.PUT_LINE(' ename: ' || ename_col(cnt));
        DBMS_OUTPUT.PUT_LINE(' sal: ' || sal_col(cnt));

    END LOOP;

END;

-----출력

 empno: 7369
 ename: SMITH
 sal: 800
 empno: 7499
 ename: ALLEN
 sal: 1600
 empno: 7521
 ename: WARD
 sal: 1250
 empno: 7566
 ename: JONES
 sal: 2975
 empno: 7654
 ename: MARTIN
 sal: 1250
 empno: 7698
 ename: BLAKE
 sal: 2850
 empno: 7782
 ename: CLARK
 sal: 2450
 empno: 7788
 ename: SCOTT
 sal: 3000
 empno: 7839
 ename: KING
 sal: 5000
 empno: 7844
 ename: TURNER
 sal: 1500
 empno: 7876
 ename: ADAMS
 sal: 1100
 empno: 7900
 ename: JAMES
 sal: 950
 empno: 7902
 ename: FORD
 sal: 3000
 empno: 7934
 ename: MILLER
 sal: 1300

'개발 > DB' 카테고리의 다른 글

[DB] 오브젝트 스캔 유형  (0) 2022.04.18
[DB]PL/SQL 연습하기  (0) 2019.06.27
[DB]PL/SQL 프로시저 기초-기본 문법 2  (0) 2019.06.26
[DB]PL/SQL 프로시저 기초-기본 문법 1  (0) 2019.06.26
[DB] PL/SQL 란?  (0) 2019.06.19