PL / SQL 의 복합 유형 에 대한 상세 한 설명

PL / SQL 에는 기본 유형 외 에 복합 유형 이라는 유형 도 있다.
1. 레코드 종류
기록 형식 은 논리 와 관련 된, 분 리 된, 기본 데이터 형식의 변 수 를 하나의 전체 로 저장 하고 최소한 하나의 스칼라 형 이나 RECORD 유형의 구성원 을 포함해 야 합 니 다.
역할 은 서로 다 르 지만 논리 와 관련 된 정 보 를 저장 하 는 것 이다.기록 형식 을 사용 할 때 현재 성명 부분 에서 기록 의 구성, 기록 의 변 수 를 정의 한 다음 실행 부분 에 있어 야 합 니 다.
기 록 된 변수 나 구성원 을 참조 합 니 다.
기록 형식 정의 문법:
TYPE record_name IS RECORD(
     v1 data_type1 [not null] [:= default_value],
     v2 data_type2 [not null] [:= default_value],
     ......
     vn data_typen [not null] [:= default_value]
);

모든 것 을 경험 하 는 실례:
DECLARE 
  --    
  --      
  TYPE test_record IS RECORD(
       name VARCHAR2(50) NOT NULL := 'my test',--:= pl/sql     
       detail VARCHAR2(300)
  );
  --      ,     
  record_book test_record;
BEGIN
  --    
  record_book.name := '          ';
  record_book.detail := '        ';
  --  
  DBMS_OUTPUT.PUT_LINE(record_book.name);
  DBMS_OUTPUT.PUT_LINE(record_book.detail);
END;--  

SELECT 를 사용 하여 기록 형식 에 값 을 부여 합 니 다. 기록 필드 가 조회 필드 와 일치 하 는 지 확인 하 십시오.
첫 번 째 단계, 테이블 작성, 데이터 삽입:
create table mytest(  
  id number(3),  
  name varchar2(20),  
  age number(3)  
);  
insert into mytest values(1,'one',18);  
insert into mytest values(2,'two',20);  
insert into mytest values(3,'three',24);  
commit;
두 번 째 단계 에서 SELECT 할당 을 사용 하여 실제 작업:
DECLARE 
  --    
  TYPE ts_record IS RECORD(
       name mytest.name%TYPE,--%TYPE  name    mytest.name     
       age mytest.age%TYPE
  );
  record_book ts_record;
BEGIN
  --    
  SELECT name,age INTO record_book 
  FROM mytest WHERE id = 1;
  DBMS_OUTPUT.PUT_LINE(record_book.name);
  DBMS_OUTPUT.PUT_LINE(record_book.age);
END;--  

출력 결과:
one
1
메모: 하나의 기록 형식 변 수 는 데이터베이스 에서 조회 한 기록 만 저장 할 수 있 습 니 다. 여러 개의 기록 을 조회 하면 오류 가 발생 합 니 다.
2. 배열 형식
배열 은 같은 유형의 구성원 집합 이다.모든 구성원 은 유일한 하 표를 가지 고 있다.PL / SQL 의 배열 유형 은 VARRAY 입 니 다.
VARRAY 데이터 형식 정의 문법:
TYPE varray_name IS VARRAY(size) OF element_type [NOT NULL];
varray_name 은 배열 이름, size 는 배열 크기, elementtype 은 그룹 구성원 형식 입 니 다. 기본 값 은 null 입 니 다. not null 제한 을 추가 할 수 있 습 니 다.
배열 사용 절차: 정의, 성명, 초기 화
DECLARE 
  --      my_array,   5,         
  TYPE my_array IS VARRAY(5) OF VARCHAR2(50);
  --    
  v_my_array my_array;
BEGIN
  --     
  v_my_array := my_array('one','two','three','four','five');
  --     1  
  DBMS_OUTPUT.PUT_LINE(v_my_array(1));
  --           
  v_my_array(1) := '   one  ';
  DBMS_OUTPUT.PUT_LINE(v_my_array(1));
END;<span style="color:#FF0000;">
</span>

3.% TYPE 사용
데이터 형식 이 존재 하 는 데이터 형식 과 일치 하 는 변 수 를 정의 합 니 다.% TYPE 를 사용 하여 데이터 형식 을 일치 시 킬 수 있 습 니 다.
장점:
(1) 인 용 된 데이터 형식 은 모 를 수 있 습 니 다.
(2) 인 용 된 유형 이 바 뀌 더 라 도 변 경 된 유형 을 유지 하고 데이터 형식의 일치 성 을 동적 으로 유지 할 수 있다.
DECLARE 
  --    
  TYPE ts_record IS RECORD(
       name mytest.name%TYPE,--%TYPE  name    mytest.name     
       age mytest.age%TYPE
  );
  record_book ts_record;
BEGIN
  --    
  SELECT name,age INTO record_book 
  FROM mytest WHERE id = 1;
  DBMS_OUTPUT.PUT_LINE(record_book.name);
  DBMS_OUTPUT.PUT_LINE(record_book.age);
END;--  
이 구문 블록 에서% TYPE 는 변 수 를 정의 하 는 데이터 형식 을 데이터베이스 시트 필드 형식 으로 하고 데이터베이스 시트 필드 형식 이 바 뀌 었 을 때 동적 으로 동기 화 합 니 다.인용 자 는 유형 을 알 필요 가 없다.

좋은 웹페이지 즐겨찾기