개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

PL/SQL에서 제공하는 Composite Type은 TABLE과 RECORD가 있습니다.

 

- TABLE Type

 

  TABLE 타입은 C의 배열(Array)와 유사하며, 데이터베이스내의 테이블과는 다르고 1차원 배열과 유사합니다. 배열의 크기는 정해져 있지 않으므로 동적으로 커질 수 있습니다. TABLE 타입은 TABLE을 색인하는데 사용되는 BINARY_INTEGER 데이터 타입의 Primary Key와 TABLE 요소를 저장하는 Scalar 데이터 타입의 두 가지 구성요소를 갖고 있어야 합니다. PL/SQL TABLE을 선언하는 순서는 먼저 TABLE 데이터 타입을 선언하고, 그 다음 해당 데이터 타입을 갖는 변수를 선언합니다.

 

 

 

 

 

* RECORD Type

 

      PL/SQL RECORD 데이터 타입은 데이터베이스의 테이블 Row와는 다르고, 3GL의구조체(Structure)와 유사합니다. PL/SQL RECORD는 Scalar, PL/SQL RECORD, PL/SQL TABLE 데이터 타입 중 하나 이상의 요소를 갖고 있어야 하며, 다른 데이터타입을 가질 수 있습니다.
     또한, Field들의 집합을 하나의 논리적 단위로 처리할 수 있게 해줌으로 테이블의 Row를 읽어 올 때 편합니다.
      PL/SQL Record를 선언하는 순서는 먼저 Record 데이터 타입을 선언하고, 해당 데이터 타입을 갖는 변수를 선언합니다.

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 * 데이터베이스의 테이블이나 View의 컬럼들로 구성된 Record를 선언할 때 %ROWTYPE Attribute를 이용하면, Record 내의 Field는 테이블이나 View의 컬럼명과 데이터 타입을 그대로 가져옵니다.
%ROWTYPE를 이용하는 방법은 데이터 타입 지정 시 테이블명%ROWTYPE 형식으로 지정하면 됩니다.

 

%ROWTYPE Attribute 역시 테이블의 칼럼에 대한 데이타타입을 정확히 모르거나, 칼럼에 대한 데이터 타입이 중간에 변경되는 경우에 유용합니다. 이 타입은 SELECT 구문으로 하나의 행을 검색하거나 Explicit Cursor를 이용하여 다중 행을 검색할 때 많이 사용됩니다.  

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

  * 칼럼 값을 저장하거나 비교하려고 PL/SQL 변수를 선언할 때, 
   변수의 데이터 타입은 정확해야 합니다.
   그렇지 않으면 실행시에 PL/SQL 오류가 발생합니다.

 

 이 때, %TYPE Attribute를 이용하여 변수의 데이터타입을  
   데이터베이스 컬럼에 맞추어 선언할 수 있습니다.
   이렇게 하려면 변수 선언에 필요한 데이터타입 대신 TABLE이름.COLUMN이름%TYPE으로 지정합니다.  

즉, %TYPE Attribute은 다음과 같은 경우에 사용합니다. 

 

 - 테이블의 칼럼과 똑같은 데이터 타입으로 변수선언시
 사용미리 선언된 변수와 똑같은 데이터 타입으로 변수선언시 사용

-  %TYPE Attribute는 테이블의 칼럼에 대한 데이터 타입을 정확히 모르거나, 칼럼에 대한 데이터 타입이 중간에 변경되는 경우에 유용합니다.

- 컬럼에 정의되어 있는 NOT NULL CONSTRAINT는 %TYPE를 써서 선언된 변수에는 적용되지 않으므로 변수에 NULL값을 지정할 수있습니다. 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

* Scalar 데이터 형태는 1개의 값을 가지며, 숫자, 문자, 날짜 그리고 BOOLEAN 4가지로 나눌 수 있습니다.

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

 

 

* ​PL/SQL 블럭안에서 변수를 선언하고 참조함으로써 값을 저장하거나 변경할 수 있습니다.

이렇게 PL/SQL 블럭안에서 변수들을 사용하기 위해서는 먼저 DECLARE Section에서 선언을 하여야 합니다.

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

 

[예제4] 앞의 예제3에서 작성한 P_TAX Procedure를 실행하면 다음과 같습니다.

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

Parameter는 실행환경과 Program사이에 값을 주고 받는 역할을 합니다. 또한 Block 안에서는 변수와 똑같이 일시적으로 값을 저장하는 역할을 합니다. 

 

 

* Procedure나 Function은 실행할 때 사용할 Parameter가 없거나 여러 개를 가질 수도 있으며, 사용되는 Parameter에는 실행환경에서 Function/Procedure로 값을 전달하는 IN이 있고, F/P에서 실행환경으로 값을 전달하는 OUT, 양쪽으로 전달하는 IN OUT등이 있다

+ Recent posts