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 |