본문 바로가기

DB관련/oracle

PL/SQL 3- 복합 변수, 제어문

레코드 타입과 

테이블 타입이 있다.

 

 

 

A>레코드 타입

1.정의와 선언

 

 TYPE 타입 이름 IS RECORD(

        필드 선언

);

식별자 TYPE_NAME

 

2. 예시

이때는 %TYPE 은 되어도 %ROWTYPE은 안된다.

 

 

예시2. 입력받고 출력

 

 

 

B>테이블 타입 변수

=컬렉션 이라고도 한다.

배열이 여러개 중첩된 것 같은 테이블 모양

키와 값으로 구성되어 있다.

 

0.종류

 

1.키

UNIQUE 속성이며

숫자일 경우 :BINARY INTEGER 또는 PLS_INTEGER

문자일 경우 :VARCHAR2

 

2.값

스칼라 데이터 유형도 가능

레코드 타입도 가능

 

3.정의와 선언

 

 

예시1.  사번이 7499 사람 이름 인덱스 0에 저장하고 출력

DECLARE

        t_name VARCHAR2(20);

        TYPE tbl_emp_name IS TABLE OF

        emp.ename%TYPE

        INDEX BY BINARY_INTEGER;

        v_name tbl_emp_name;

BEGIN

        SELECT ename INTO t_name

        FROM emp

        WHERE empno=7499;

         v_name(0):=t_name;

DBMS_OUTPUT.PUT_LINE(v_name(0));

END;

/

 

예시2 . 반복문을 사용해서 사원 이름 출력하기

DECLARE

        TYPE e_table_type IS TABLE OF

        emp.ename%TYPE

        INDEX BY BINARY_INTEGER;

        tab_type e_table_type;

 

        a BINARY_INTEGER :=0;            -- BEGIN 에서 인덱스로 쓸 a 선언

BEGIN

        FOR i IN(SELECT ename FROM emp) LOOP     --IN 횟수 만큼 루핑 i의 인덱스일때의 결과

                                                                                    --i는 증감변수

                a := a+1;

                tab_type(a) := i.ename;

        END LOOP;

        FOR j IN 1..a LOOP                                 --1부터 a 까지

                DBMS_OUTPUT.PUT_LINE(tab_type(j));

        END LOOP;

END;

 

C> 바인드 변수

호스트 변수라고도 한다.

PL/SQL 바깥 블록에서 선언되고 

PL/SQL 안에서 사용된다.

 

1.선언, 사용

VARIABLE [바인드 변수] [타입]

BEGIN

        SELECT(pay*12) + NVL(bonus,0) INTO : v_bind

        FROM professor

        WHERE profno =1001;

END;

실행 한뒤

PRINT v_bind;

하면 결과가 나온다.

 

D> 조건문

1.IF THEN

IF 조건 THEN 실행문장;

   실행문

END IF; --반드시 닫아줘야한다.

 

 

2.IF THEN ELSIF

IF 조건 THEN

 실행문장

ELSIF 조건 THEN

  실행문장

END IF;

 

 

3.IF THEN ELSE

IF 조건 THEN

실행문

ELSE

실행문

END IF;

 

 

E>CASE 문

CASE 조건

       WHEN 조건1 THEN 결과1

       WHEN 조건2 THEN 결과2

ELSE 기본값

END;   

 

 

F>반복문

 

1.기본 LOOP

조건을 나중에 검색 =do while

 

LOOP

      PL/SQL 문장 ;

      PL/SQL 문장 ;

EXIT 조건 ; --ex)WHEN 조건

END LOOP;

 

2.WHILE LOOP

시작부터 조건을 검색

문형:

WHILE 조건 LOOP

     PL/SQL 문장

     PL/SQL 문장 ;

END LOOP;

 

3.FOR 반복문

역순으로 반복하려면 reverse 를 하면 된다.

FOR 증감변수 IN [REVERSE] 시작..끝 LOOP

      PL/SQL 문장 ;

      PL/SQL 문장 ;

END LOOP;

 

4.CONTINUE 

다시 반복조건으로 되돌아간다.

CONTINUE WHEN 조건

'DB관련 > oracle' 카테고리의 다른 글

예외와 예외처리  (0) 2021.01.21
PL/SQL -4 CURSOR  (0) 2021.01.21
PL/SQL -2 스칼라 변수  (0) 2021.01.20
PL/SQL -1  (0) 2021.01.20
복수행 함수 - 연산 함수와 그룹함수  (0) 2021.01.15