본문 바로가기

SQL

(22)
DB2 흐름 제어 : 이동 제어 ITERATE, GOTO, RETURN 1. 이동 제어 : ITERATE ITERATE 문은 LOOP 문, WHILE 문, REPEAT 문, FOR 문 등 반복 제어의 시작 부분으로 이동할 때에 사용한다. ITERATE 레이블명 JAVA 의 CONTINUE 와 유사한 기능으로 특정한 조건을 만족하는 경우 시작 부분으로 돌아가게 되고, 그 이후 문장은 실행하지 않게 된다. 2. 이동 제어 : GOTO GOTO 문은 사용자가 임의로 정의한 레이블이 있는 위치로 이동한다. 이 때 지정 가능한 레이블은 동일한 SCOPE 에 있는 레이블만 가능하다. GOTO 레이블명; DECLARE V1 INT DEFAULT 10; IF (V1 > 5) THEN SET V1 = V1 * 2; GOTO exit; END IF; SET V1 = V1 + 100; exit..
DB2 흐름 제어 : 반복 제어 LOOP, REPEAT, WHILE, FOR 1. 반복 제어 : LOOP LOOP SQL PL; END LOOP; LOOP 문에는 LOOP 와 END LOOP 를 반드시 지정해야 한다. 이 사이에 반복 처리할 SQL PL 문을 작성해준다. LOOP 문에 반복을 탈출할 탈출 조건을 작성해 주지 않으면 무한 반복되는 상태가 되기 때문에 반드시 탈출 조건을 추가해 줘야 하고, 반복을 종료하는 LEAVE 문을 지정해야 한다. DECLARE V1 INT DEFAULT 0; test_loop: LOOP SET V1 = V1 + 1; IF (V1 >= 3) THEN LEAVE test_loop; END IF; END LOOP test_loop; 위의 코드를 실행시키면 v1 이 3이 되면 작성한 탈출 조건에 의하여 IF 문을 참 조건으로 실행하게 되고 이에 따라..
DB2 흐름 제어 : 비교 제어 IF , CASE 문 1. 흐름 제어 문장 SQL PL 에서는 프로그램과 유사한 방식을 통하여 실행 순서를 제어할 수 있다. 크게 비교 제어(IF, CASE), 반복 제어(LOOP, WHILE, REPEAT, FOR), 이동 제어(ITERATE, LEAVE, GOTO, RETURN) 세 가지로 분류할 수 있다. 구분 SQL PL 문장 compiled 복합 SQL inlined 복합 SQL 데이터 액세스 레벨 비교 제어 IF O O CONTAINS SQL CASE O X CONTAINS SQL 반복 제어 LOOP O X CONTAINS SQL WHILE O O CONTAINS SQL REPEAT O X CONTAINS SQL FOR O O READS SQL DATA 이동 제어 ITERATE O O CONTAINS SQL LEA..
DB2 VALUES INTO 문 1. VALUES INTO 문 VALUES 문의 실행 결과로 반환된 결과를 scalar 변수 또는 row 변수에 할당하게 된다. 이 때 반환되는 결과는 최대 한 건으로, SELECT INTO 문과는 결과 레코드를 직접 지정한다는 점에서 차이를 드러낸다. 결과가 2건 이상이 되면, 오류가 발생하고, INTO 절에 지정한 변수의 값은 변경되지 않는다. VALUES ...INTO scalar변수1 [, scalar변수2,...] VALEUS ...INTO row변수 먼저 결과 레코드의 컬럼별로 scalar 변수에 할당하는 방법을 살펴보자. DECALRE V_NO INT; DECALRE V_NAME VARCHAR(10); VALUES(10, 'ABC') INTO V_NO, V_NAME; 예문에서 VALUES 문..
DB2 SELECT INTO 문 1. SELECT INTO 문 SELECT INTO 문은 SELECT 문의 실행 결과인 결과 레코드를 scalar 변수 또는 row 변수에 할당하는 역할을 한다. 때문에 SELECT 문의 결과 레코드는 최대 1 건이어야 한다는 특징이 있다. SELECT ---INTO scalar 변수1 [, 변수2, ...] FROM ... SELECT ---INTO row 변수 FROM ... INTO 절에는 SELECT 절에서 작성된 컬럼에 대응하는 scalar 변수 또는 row 변수를 작성하게 된다. 먼저 scalar 변수에 할당하는 경우를 살펴보자. DECLARE V_NO INT; DECLARE V_NAME VARCHAR(10); DECLARE V_PHONE VARCHAR(20); SELECT XNO, XNAME..
DB2 DECLARE TYPE, DECLARE, SET 1. 변수 제어 문장 변수를 제어하는 문장은 데이터 유형을 선언하는 문장, 변수를 선언하는 문장, 변수에 값을 할당하는 문장 등으로 구분된다. 1️⃣ 변수의 데이터 유형 선언 변수의 데이터 유형을 선언하는 문장에는 DECLARE TYPE 문이 있다. DECLARE TYPE 문은 complied 복합 SQL 문 블록 안에서만 유효한 사용자 정의 데이터 유형을 선언한다. 이때 선언 가능한 사용자 정의 데이터 유형은 row 유형과 array 유형이 있다. 2️⃣ 변수의 선언 변수를 선언하는 문장에는 DECLARE 문이 있다. DECLARE 문은 complied 또는 inlined 복합 SQL 문 블록 안에서만 유효한 지역변수를 선언할 때에 사용한다. 이때 선언 가능한 변수 유형은 scalar 변수, boole..
DB2 CREATE VARIABLE : 전역변수 선언 1. CREATE VARIABLE 문 CREATE VARIABLE 문은 한 개의 session 안에서 유효한 전역변수(global variable) 또는 session 변수를 정의한다. session 은 데이터베이스에 접속할 때 시작되고, 접속이 해제될 때에 종료된다. 정의된 전역변수는 복합 SQL 문 블록에서 사용될 수도 있고, anchor 유형의 참조 대상이 될 수 있다. CREATE [OR REPLACE] VARIABLE [스키마명.]전역변수 유형1 [ { DEFAULT 값1 | CONSTANT 값 1 } ] 유형1 { built-in 유형 | anchor 유형 | distinct 유형 | row 유형 | array 유형 | cursor 유형 } 값1 { NULL | 상수 | 특별레지스터 | 전역변..
DB2 CREATE TYPE : 사용자 정의 데이터 유형 정의 1. CREATE TYPE 문 CREATE TYPE 문은 distinct 유형, row 유형, array 유형, cursor 유형 등의 사용자 데이터 유형을 정의한다. 이렇게 정의된 데이터 유형은 SQL PL 변수의 데이터 유형으로 사용될 수 있다. CREATE [OR REPLACE] TYPE [스키마명.]유형명 AS { distinct 유형 | row 유형 | array 유형 | cursor 유형 } 스키마명은 선택적으로 지정 가능하며, 스키마명을 명시적으로 지정하지 않은 경우에는 PATH 에 등록된 기본 스키마명이 적용된다. 유형명에는 정의하고자 하는 데이터 유형의 이름을 대소문자 구분없이 지정할 수 있고, AS 다음에 세부 데이터 유형을 정의할 수 있다. 📌 OR REPLACE 옵션 CREATE T..