SQL - PL /SQL

2020. 9. 24. 18:15학원공부/SQL

FOR

기본 문법

    인덱스는 1씩 증가하며, 참조는 가능하나 변경할 수 없다.
    REVERSE를 명시하면 최종값에서 시작하여 초기값으로 감소하면서 반복

 

예제

FOR 인덱스 IN [REVERSE] 초기값..최종값 LOOP

처리문; END LOOP;

 

DECLARE
    vn_base_num NUMBER := 3;

BEGIN
    FOR i IN 1..9

    LOOP

           DBMS_OUTPUT.PUT_LINE (vn_base_num || ‘*’ || i || ‘= ‘ || vn_base_num * i);

END LOOP;

END;

 

 

 

 

 

 

 

GOTO

GOTO문이 지정하는 레벨로 제어가 넘어간다.

DECLARE
     vn_base_num NUMBER := 3;

BEGIN

    <<third>>

    FOR i IN 1..9

    LOOP

            DBMS_OUTPUT.PUT_LINE (vn_base_num || ‘*’ || i || ‘= ‘ || vn_base_num * i);

            IF i=3 THEN GOTO fourth;
            END IF;

    END LOOP;

<<fourth>>

   vn_base_num := 4;

    FOR i IN 1..9

     LOOP

          DBMS_OUTPUT.PUT_LINE (vn_base_num || ‘*’ || i || ‘= ‘ || vn_base_num * i);

     END LOOP

END;

 

 

 

 

 

사용자 정의 함수

함수란 매개변수를 받아 정해진 작업을 처리하고 결과를 반환하는 데이터베이스 객체

 

이름이 있는 서브 프로그램인 함수나 프로시저는 컴파일을 거쳐 데이터베이스 내에 저장되어 재사용이 가능하다.

 

함수의 생성

CREATE OR REPLACE FUNCTION 함수이름

RETURN 데이터타입

 

IS[AS]

     변수, 상수 선언

 

BEGIN

     실행부

     

RETURN 반환값;

 

[EXCEPTION

예외 처리부]

 

END [함수이름];

 

 

예제
      나머지를 반환하는 MOD 함수

CREATE OR REPLACE FUNCTION my_mod(num1 NUMBER, num2 NUMBER)

RETURN NUMBER;

IS
     vn_remainder NUMBER := 0; --
반환할 나머지

     vn_quotient NUMBER := 0; --

BEGIN
       vn_quotient := FLOOR(num1 / num2); --
몫을 저장

       vn_remainder := num1 (num2 * vn_quotient);

 

       RETURN vn_remainder;

END;

'학원공부 > SQL' 카테고리의 다른 글

SQL - 예외처리  (0) 2020.09.25
SQL - PL/SQL 2  (0) 2020.09.25
SQL - join3  (0) 2020.09.23
sql - join2  (0) 2020.09.23
SQL - join  (0) 2020.09.22