2021년 10월 16일 토요일

PL/SQL 강좌. %TYPE 및 %ROWTYPE 속성

 

PL/SQL 강좌. %TYPE 및 %ROWTYPE 속성

15.1.2.3. %TYPE 및 %ROWTYPE 속성


%TYPE 속성


실무에서 테이블의 모든 컬럼에 대해 데이터 타입 및 길이를 정확히 알고 있을 수는 없습니다. 하나의 테이블에 컬럼의 개수가 많은 경우도 많고, 더구나 가끔 칼럼 사이즈는 변하기도 하죠. 이 경우 %TYPE 속성을 사용한다면 PL/SQL에서 보다 능동적으로 대처할 수 있습니다.


변수의 데이터 타입을 어떤 테이블의 어떤 컬럼과 같이 하라는 의미 입니다.

물론 이전에 정의한 어떤 변수와 타입을 같이 하라는 의미를 부여할 수도 있습니다.


DECLARE

   -- v_name 변수의 타입을 EMP 테이블의 ename 컬럼과 같이 정의 합니다.

   v_ename EMP.ENAME%TYPE;


   -- p_name 변수의 타입을 이전에 정의한 v_ename 변수의 타입으로 정의 합니다.

   p_name        v_ename%TYPE;


BEGIN

   …

END


%ROWTYPE 속성


SELECT LIST에서 전체 컬럼을 선택해서(SELECT *) INTO 절의 변수에서 받을 때 유용하게 이용 됩니다. 어떤 테이블의 ROW(로우, 행, 레코드)와 타입을 같이 하라는 속성 입니다. 


%ROWTYPE 속성을 실습해 보겠습니다.

실습


EMP 테이블에서 사번이 7369인 사원의 레코드의 모든 컬럼을 %ROWTYPE을 이용하여 SELECT ~ INTO 절에서 받아 보겠습니다.


아래 PL/SQL 예제를 실습해 보세요.


SET SERVEROUTPUT ON

DECLARE

   -- EMP 테이블의 행, ROW와 구조를 같이하는 EMP_RECORD라는 변수를 정의합니다.

   -- EMP%ROWTYPE을 테이블 기반 레코드 타입 이라고 합니다.

   EMP_RECORD   EMP%ROWTYPE; 

BEGIN

   -- 7360 사원의 모든 컬럼을 추출 후 EMP_RECORD 변수에 담습니다.

   SELECT *

   INTO EMP_RECORD

   FROM EMP

   WHERE EMPNO = 7369 ;

    

   -- 사번(empno), 성명(ename), 부서코드(deptnp) 값을 출력 합니다.

   DBMS_OUTPUT.PUT_LINE(EMP_RECORD.EMPNO || ',' || EMP_RECORD.ENAME || ',' || ',' || EMP_RECORD.DEPTNO);

END;


<실행결과>

7369,SMITH,800,20

댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...