DBIO 시작하기
본 장에서는 DBIO 편집기에서 SQL의 사용 유형별로 나누어진 DBIO 쿼리를 작성하는 절차에 대하여 설명한다. 또한 개발자가 DBIO 쿼리를 작성함에 있어 작성 예제로 설정된 시나리오를 중심으로 설명한다. 설명하는 예제는 스튜디오 환경에서 작성되었다.
1. 개요
본 장에서는 다음과 같은 절차로 DBIO 쿼리를 작성한다.
-
DBIO 기본 정보 등록
DBIO를 생성하기 위한 첫 절차로 DBIO 쿼리 작성에 필요한 기본 정보를 등록한다. 구체적인 등록 절차에 대한 내용은 DBIO 기본 정보 등록을 참고한다.
-
DBIO 편집기 사용
스튜디오에 내장된 DBIO 편집기를 사용하는 방법을 설명한다. 즉, DBIO 쿼리를 작성하기 전에 DBIO 편집기에서 제공하는 세부 기능을 익히고 사용하여 본다. 구체적인 사용방법에 대한 내용은 DBIO 편집기 사용을 참고한다. 해당 절에서 DBIO 편집기를 사용하는 방법을 설명할 때 PERSIST 쿼리 타입으로 생성된 DBIO를 예로 든다.
-
SQL의 사용 유형별 DBIO 쿼리 작성하기
SQL의 사용 유형별로 나누어진 DBIO 쿼리 타입 즉, PERSIST, VIEW, EXECSQL, DYNAMICSQL에 따라 DBIO 쿼리를 작성한다. 구체적인 작성절차는 쿼리 타입별 DBIO 쿼리 작성을 참고한다.
-
소스생성, 컴파일, Dlupdate
작성된 DBIO 쿼리를 컴파일하는 과정은 크게 3단계로 진행된다. 이 컴파일 과정을 마치면 DBIO 모듈이 생성된다. 구체적인 컴파일 절차에 대한 내용은 DBIO 저장, 소스 생성, 컴파일, Dlupdate을 참고한다.
2. DBIO 기본 정보 등록
다음은 DBIO 쿼리 작성에 필요한 기본 정보를 등록하는 절차이다.
-
작업영역 네비게이터에서 오른쪽 마우스 버튼을 클릭한 후 [New] > [DBIO 쿼리] 메뉴를 선택한다.
DBIO 쿼리 메뉴 -
다음과 같이 새로운 쿼리 작성 대화상자가 나타난다.
새로운 쿼리 작성 대화상자다음은 화면의 각 항목에 대한 설명이다.
-
리소스 그룹
WebAdmin에 등록된 리소스 그룹만 표시되며 필수선택 항목이다. 만약 선택할 리소스 그룹이 없는 경우 WebAdmin에서 추가할 수 있다.
리소스 그룹을 추가하기 위해서는 WebAdmin에 접속한 후, [메타관리] > [메타시스템] > [리소스 그룹 관리] 메뉴를 선택한다. 리소스 그룹관리 화면에서 현재 설정되어 있는 리소스 그룹을 확인하고 추가할 리소스 그룹을 등록한다.
-
쿼리 타입
SQL의 사용 유형별로 작성할 DBIO 쿼리 타입을 선택한다. 쿼리 타입은 PERSIST, VIEW, EXECSQL, DYNAMICSQL 등이 있으며 필수 선택항목이다.
-
Exec 타입
Exec 타입은 필수 선택항목이며, 선택된 쿼리 타입에 따라 각 Exec 타입 앞에 위치한 라디오 버튼이 활성화되거나 비활성화된다.
다음은 선택된 쿼리 타입에 따라 선택할 수 있는 Exec 타입이다.
쿼리 타입 Exec 타입 PERSIST
INSERT/UPDATE/DELETE/SELECT/FETCH
VIEW
SELECT/FETCH
EXECSQL
INSERT/UPDATE/DELETE
DYNAMICSQL
INSERT/UPDATE/DELETE/SELECT/FETCH
-
대상 테이블
DBIO 쿼리 작성에 필요한 대상 테이블을 선택한다. 필수항목이 아닌 대상 테이블은 쿼리 타입이 PERSIST일 경우를 제외하고는 [테이블 검색] 버튼이 활성화되지 않는다. 단, WebAdmin에서 DBIO와 관련된 환경설정 정보 중 'NON_PERSIST_MAIN_TABLE’에 정의된 설정내용 값이 ‘Y’라면 VIEW, EXECSQL, DYNAMICSQL 쿼리 타입이라도 새로운 쿼리 작성 대화상자에 [테이블 검색] 버튼이 활성화되어 나타난다.
대상 테이블을 선택하는 방법은 [테이블 검색] 버튼을 클릭하면 테이블 선택 – DBIOStudio 대화상자와 같이 테이블 선택 - DBIOStudio 대화상자가 나타난다.
테이블 선택 – DBIOStudio 대화상자'테이블 이름' 항목에 테이블 이름 전체 또는 일부를 입력한다. 만약 DBIO 환경설정 대화상자의 테이블 검색 영역에 ‘자동 검색 기능을 사용하지 않습니다.’ 항목이 선택되어 있다면 <Enter> 키를 눌러야만 사용 가능한 테이블들이 검색된다. 검색된 테이블 중 사용하려는 테이블을 선택한 후 [확인] 버튼을 클릭한다. '테이블 이름' 항목의 앞에서 3글자까지는 입력해야 해당 글자로 시작하는 테이블이 조회된다.
테이블 선택 - DBIOStudio 대화상자는 2가지 유형으로 대상 테이블을 선택할 수 있다.
첫 번째는 테이블 선택 – DBIOStudio 대화상자와 같이 현재 연결된 데이터베이스 스키마 내 테이블 중에서만 대상 테이블을 선택하는 것이고, 두 번째는 현재 데이터베이스에 있는 모든 스키마에 속한 전체 테이블 중에서 선택하는 방법이 있다. 두 번째 방법은 특정 스키마에 속해 있는 테이블들만을 필터링하여 볼 수 있다.
만약 두 번째 유형으로 대상 테이블을 선택하기 위해서는 WebAdmin에서 DBIO와 관련된 환경설정 정보 중 'TABLES_BEYOND_SCHEMA’에 정의된 설정내용 값을 ‘Y’로 변경해야 한다.
-
논리명, 물리명
생성할 DBIO의 논리명과 물리명을 입력한다. 논리명과 물리명은 필수 입력항목으로 WebAdmin에서 DBIO와 관련된 환경설정 정보 중 'NAMING_RULE', 'NAMING_RULE_APPLIED', 'NAMING_RULE_FOR_LOGICAL'에서 정의된 설정내용 값에 따라 자동으로 입력될 수 있다.
-
-
위와 같이 새로운 쿼리 작성 대화상자에서 DBIO 기본 정보를 모두 등록한 후 [완료] 버튼을 클릭하면, 선택된 쿼리 타입에 따라 DBIO 쿼리를 작성할 수 있는 화면으로 이동된다.
DBIO 쿼리를 작성할 수 있는 화면에 대한 내용은 다음 절을 참고한다.
3. DBIO 편집기 사용
DBIO 편집기는 스튜디오에 내장된 GUI 기반의 DBIO 편집 툴이다. DBIO 편집기를 이용하여 개발자는 실행할 DBIO 쿼리를 쉽게 작성할 수 있다.
DBIO 편집기 화면은 아래 그림과 같이 4개의 영역으로 구성된다.
다음은 DBIO 편집기 화면의 각 영역에 대한 설명이다.
① DBIO 기본 정보 영역
② 테이블 정보 영역
③ 쿼리 입력 영역
④ 화면이동 영역
① DBIO 기본 정보 영역
이 영역은 DBIO 기본 정보 등록과 같은 절차로 등록된 DBIO의 기본 정보를 표시하는 영역이다 이 기본 정보는 DBIO 생성에 필요한 정보들로 구성된다. 예를 들면 DBIO의 물리명과 논리명 그리고 DBIO 쿼리를 실행할 테이블, 이 테이블이 속해 있는 스키마, DBIO 상태 등이 있다.
다음은 DBIO 기본 정보 화면의 각 항목에 대한 설명이다.
| 항목 | 설명 |
|---|---|
물리명 |
DBIO의 물리명을 표시한다. |
스키마 |
대상 테이블이 속한 스키마 이름을 표시한다. |
테이블 |
대상 테이블의 이름을 표시한다. |
상태 |
등록된 DBIO 상태를 표시한다.
|
배열 크기 |
수정이 가능한 항목으로 DBIO를 복수로 처리할 때 Array 크기를 지정한다. |
Query 종류 |
등록된 쿼리 타입을 표시한다. |
LockQuery생성 |
수정이 가능한 항목이다. 무결성을 보장하기 위해 선택한다. |
대기시간 |
수정이 가능한 항목이다. LockQuery 생성이 선택된 경우에만 대기시간을 입력할 수 있다. |
입력구조체 |
자동으로 생성된 입력 구조체를 표시한다. |
출력구조체 |
자동으로 생성된 출력 구조체를 표시한다. |
논리명 |
DBIO의 논리명을 표시한다. 이 논리명은 수정이 가능하다. |
② 테이블 정보 영역
DBIO 쿼리를 실행할 대상 테이블 정보를 표시하는 영역이다. 이 영역은 크게 4개 영역으로 세분된다.
-
[테이블_컬럼]
[테이블_컬럼] 탭에서는INSERT/UPDATE/SELECT/FETCH를 실행할 대상 테이블의 컬럼이 표시된다. 단, DELETE를 실행한 경우에는 컬럼이 표시되지 않고 비활성화되어 표시된다.
DBIO 편집기 화면 – [테이블_컬럼] 탭 -
[미리보기_입력변수]
SQL Preview 영역에서는 등록된 DBIO의 SQL 쿼리가 제대로 작성되었는지 확인할 수 있다.
Input 영역에서는 정의된 입력변수 정보를 조회할 수 있다. SELECT/FETCH Exec 타입의 경우 정의된 입력변수의 데이터 타입, 길이 등을 설정할 수 있다.
DBIO 편집기 화면 – [미리보기_입력변수] 탭 -
컬럼 그리드
DBIO 편집기 화면 – 컬럼 그리드다음은 컬럼 그리드의 각 항목에 대한 설명이다.
컬럼명 설명 컬럼명/수식
컬럼의 이름 또는 수식을 표시한다.
데이터베이스 타입
데이터베이스에서 일반적으로 제공하는 데이터 타입을 표시한다.
데이터베이스 타입의 종류로는 char, varchar, number, clob, blob 등이 있다.
변수명
해당 컬럼의 변수명을 표시한다.
논리명
해당 컬럼의 논리명을 표시한다.
데이터 타입
ProFrame에서 사용하는 데이터 타입이다.
다음은 데이터 타입의 종류이다.
-
string
-
long
-
number(number형은 Oracle의 number형과 일치하지 않는다. ProFrame에서 number형은 19자리 이상 정수이거나 소수점을 가지고 있는 실수로 표현한다.)
-
double
-
CLocator
-
BLocator
길이
해당 컬럼의 길이를 표시한다.
Decimal
해당 컬럼의 소수점을 표시한다.
메타 ID
해당 컬럼이 WebAdmin에 저장된 메타 정보와 일치하는 경우 메타 ID 값이 표시된다.
설명
해당 컬럼의 부가 설명을 표시한다.
다음은 컬럼 그리드의 항목 중 주요 컬럼에 대한 설명이다.
-
메타 ID
메타 ID 컬럼 항목은 WebAdmin에 저장된 메타 정보의 존재 유무에 따라 표시되는 모습이 다르다.
아이콘 설명 WebAdmin에 저장된 메타 정보가 존재하지 않는 경우 오류 아이콘이 나타난다.
WebAdmin에 저장된 메타 정보가 존재하지만 해당 메타 정보의 점검이 필요한 경우 점검 아이콘이 나타난다.
다음은 아이콘이 표시되는 오류 컬럼의 예이다.

점검 아이콘이 나타나는 이유는 테이블의 스키마 변경으로 인해 해당 컬럼이 더 이상 존재하지 않거나 메타 정보와 일치하지 않는 경우에 표시된다. 메타 정보와 일치하지 않는 경우에는 컬럼 그리드에 있는 데이터 타입, 길이, 논리명이 테이블의 컬럼 정보와 일치하는지 확인해야 한다.
-
테이블 공통 컬럼
테이블의 공통 컬럼은 INSERT, UPDATE할 때 시스템의 일부 속성(최종 수정일자, 최종 수정자 ID 등)을 무조건 기록하여 생성하는 경우에 사용한다. DBIO 편집기에서는 DBIO 쿼리를 작성할 때 위와 같은 공통 컬럼이 자동으로 생성될 수 있도록 지원한다.
PERSIST 쿼리 타입으로 생성된 DBIO는 공통 컬럼을 변수 목록에서 제거하거나 편집할 수 없다. 따라서 대상 테이블에 다음과 같은 공통 컬럼은 반드시 포함되어야 한다.
만일 대상 테이블에 공통 컬럼이 포함되지 않는 경우 새로 DBIO를 생성할 때 오류가 발생할 수 있다.
-
-
기능 버튼
다음은 DBIO 편집기 화면에서 사용되는 기능별 버튼에 대한 설명이다.
버튼 설명 >>
대상 테이블의 모든 컬럼이 선택 여부와 상관없이 컬럼 그리드로 이동된다.
>
[>] 버튼을 클릭하면 단수 또는 복수로 선택된 컬럼이 컬럼 그리드로 이동된다.
<
[<] 버튼을 클릭하면 단수 또는 복수로 선택된 컬럼을 컬럼 그리드에서 제거한다.
<<
[<<] 버튼을 클릭하면 "컬럼 전체를 삭제하려 합니다. 계속 하시겠습니까?"라는 경고 창이 나타난다. 이 창에서 [확인] 버튼을 클릭하면 컬럼 그리드에 있는 모든 컬럼이 제거된다.
New
특정 컬럼을 가공하여 새로운 출력변수로 설정하는 경우 사용한다.
TOP
특정 컬럼을 컬럼 그리드 맨 앞으로 이동한다.
∧
특정 컬럼을 위로 한 칸씩 이동한다.
∨
특정 컬럼을 아래로 한 칸씩 이동한다.
BTM
특정 컬럼을 컬럼 그리드 맨 뒤로 이동한다.
메타정보 동기화
WebAdmin에 정의된 메타 정보와 동기화할 때 사용한다.
③ 쿼리 입력 영역
Where, Order by & Hints, Group by & Having 절 등을 입력할 수 있는 영역이다.
| 탭 이름 | 설명 |
|---|---|
Where |
Where 절을 제외한 기타 표현식과 입력변수를 지정할 수 있다. |
Order by & Hint |
Order by 영역과 Hint 영역이 존재한다. 각각 Order by 절을 제외한 표현식과 /*+ */ 기호를 제외한 Hint 절을 입력한다. |
Group by & Having |
Group by 영역과 Having 영역이 존재한다. 각각 Group by 절을 제외한 표현식과 Having 절을 제외한 나머지 표현식을 입력한다. |
설명 |
해당 쿼리에 대한 부가 설명을 입력한다. 이 항목은 실제 쿼리를 작성하는 것에는 영향을 미치지 않는다. |
④ 화면이동 영역
Query Editor 화면 또는 Preview & Test 화면으로 이동할 수 있는 탭을 제공하는 영역이다.
| 탭 이름 | 설명 |
|---|---|
Query Editor |
작성된 DBIO 쿼리를 편집할 수 있는 화면이다. |
Preview & Test |
작성된 DBIO 쿼리가 제대로 작성되었는지 확인하거나 테스트하는 화면이다. |
4. 쿼리 타입별 DBIO 쿼리 작성
본 절에서는 간단한 시나리오를 통해 쿼리 타입별로 DBIO 쿼리를 작성하는 방법에 대해 알아본다.
각 쿼리 타입별로 정의된 시나리오는 DBIO의 기본 정보 등록 과정부터 작성이 완료된 DBIO 쿼리를 테스트하는 과정까지 설명한다.
4.1. PERSIST
PERSIST 쿼리 타입의 DBIO 쿼리를 작성하는 시나리오는 다음과 같다.
-
DBIO의 기본 정보를 등록한다.
설정 항목 등록 예 리소스 그룹
DBIO_C
쿼리 타입
PERSIST
Exec 타입
SELECT
대상 테이블
DEV_RESOURCE
논리명
DBIO_Persist_logical
물리명
DBIO_Persist
-
대상 테이블의 모든 컬럼을 선택하고 추가로 ‘descnm’ 출력변수를 생성한다.
-
Where 절에 ‘input_txt’ 입력변수를 추가한다. ‘input_txt’ 입력변수 값은 테스트 단계에서 ‘ename’을 입력한다.
-
생성된 DBIO 쿼리를 확인하고 테스트한다.
-
SQL 미리 보기
-
테스트 및 실행플랜 보기
-
ResultSet 보기
-
DBIO 저장
-
다음은 위에서 정의한 시나리오대로 수행하는 예제이다.
-
작업영역 네비게이터에서 오른쪽 마우스 버튼을 클릭한 후 [New] > [DBIO 쿼리] 메뉴를 선택한다.
-
다음과 같이 새로운 쿼리 작성 대화상자가 나타나면 DBIO의 기본 정보를 등록한 후 [완료] 버튼을 클릭한다.
새로운 쿼리 작성 대화상자 – PERSIST -
PERSIST 쿼리 타입의 DBIO 편집기 화면이 나타난다.
DBIO 편집기 화면 – PERSIST쿼리 타입과 상관없이 DBIO 편집기 화면에 공통으로 나타나는 영역과 각 항목에 대한 설명은 DBIO 편집기 사용을 참고한다. 본 예제에서는 등록된 DBIO의 기본 정보를 수정하지 않고 확인하는 과정만 수행한다. 참고로 DBIO의 기본 정보에서 수정할 수 있는 항목은 '배열 크기', 'LockQuery 생성', '대기시간', '논리명'뿐이다.
-
DEV_RESOURCE 테이블의 모든 컬럼을 선택한다.
DEV_RESOURCE 테이블 목록 앞에 있는 [+] 아이콘을 클릭하면 위 그림과 같이 모든 컬럼이 목록에 표시된다. 이 컬럼 목록은 DELETE Exec 타입인 경우를 제외하고는 INSERT/UPDATE/SELECT/FETCH할 대상 컬럼이 나타난다. 만약 DELETE Exec 타입으로 DBIO를 생성하는 경우에는 컬럼 목록이 비활성화되어 나타난다.
DEV_RESOURCE의 모든 컬럼을 [>>] 버튼을 클릭해서 컬럼 그리드로 이동한다. 이 버튼은 대상 테이블의 모든 컬럼을 컬럼 그리드로 이동시키는 역할을 한다.
PERSIST – [테이블_컬럼] 탭 -
선택된 컬럼 외에 DESCRIPTION 컬럼을 가공하여 ‘descnm’ 출력변수를 생성한다.
특정 컬럼을 가공하여 새로운 출력변수를 생성하는 방법은 Exec 타입에 따라 다르다.
-
SELECT/FETCH Exec 타입의 경우
특정 컬럼을 가공하여 출력할 때 수식 편집 기능을 사용한다. 이 기능은 PERSIST – [테이블_컬럼] 탭 화면에 있는 [New] 버튼을 클릭하여 새로운 출력변수를 생성할 수 있다.
본 예제에서는 DESCRIPTION 컬럼 데이터의 존재 유무를 구하는 ‘descnm’ 출력변수를 다음과 같이 생성한다.
Expression – DBIOStudio 대화상자항목 설명 수식
특정 컬럼의 데이터를 가공하기 위한 수식을 입력한다.
데이타베이스 타입
숫자형 데이터베이스 타입은 일반적으로 long형으로 지정된다.
Expression - DBIOStudio 대화상자에서 숫자형의 수식을 표현할 때는 반드시 number형으로 지정해야 오류 없이 DBIO가 컴파일된다.
Select as
실제 데이터베이스 프로그램에서 사용할 변수명을 입력한다.
데이터 타입
데이터베이스 프로그램에서 사용할 데이터 타입을 지정한다.
데이터 타입이 long형일 때는 길이와 Decimal 항목을 입력할 필요가 없지만 number형일 때는 반드시 길이, Decimal(소수점) 항목을 입력해야 한다.
long형은 데이터베이스에서 2GB까지 저장되는 바이너리 데이터이다.
길이
데이터의 길이를 입력한다.
Decimal
소수점을 입력한다.
-
INSERT/UPDATE의 경우
특정 컬럼을 가공하여 출력할 때 컬럼 그리드에 표시된 출력변수명을 선택한다. 이때 출력변수명을 선택하면 […] 버튼이 나타난다.
본 예제에서는 INSERT 쿼리 타입의 DBIO를 등록한 후 DEV_RESOURCE 테이블의 RESOURCE_TYPE 컬럼을 대문자로 가공하는 방법을 설명한다. 먼저 RESOURCE_TYPE 컬럼을 변수명/수식 열에서 선택한다.
Expression – RESOURCE_TYPE 컬럼다음과 같이 RESOURCE_TYPE 컬럼을 가공할 수 있는 Expression - DBIOStudio 대화상자가 나타난다.
Expression – DBIOStudio 대화상자위 그림과 같이 Expression - DBIOStuduio 대화상자를 이용하면 직접 수식을 입력할 수 있을 뿐만 아니라 단일 테이블에 대한 SQL 쿼리 구문도 작성할 수 있다. 또한 주로 사용되는 DECODE 등의 구문도 작성할 수 있다.
-
-
Expression - DBIOStudio 대화상자에서 DESCRIPTION 컬럼에 대한 수식을 입력하고 [확인] 버튼을 클릭하면 descnm 출력변수가 다음과 같이 컬럼 그리드에 나타난다.
PERSIST – 출력변수 생성 결과 -
[Where] 탭에 다음과 같은 표현식을 추가한다. 다음 그림과 같이 PHYSICAL_NAME 컬럼에 대한 input_txt 입력변수를 생성한다.
PERSIST – 입력변수 추가 화면[Where] 탭은 일반적인 SQL 구문을 기준으로 Where 절을 제외한 나머지 표현식을 입력하는 영역이다. Input_txt 입력변수를 Where 절에 추가할 때 반드시 콜론(:) 기호 뒤에 띄어쓰기 없이 변수명을 입력해야 한다. 그렇지 않으면 입력변수로 인식될 수 없다.
-
위와 같이 작성된 DBIO 쿼리를 테스트하기 위해 DBIO 편집기 화면 하단에 있는 [Preview & Test] 탭을 선택하면 QueryEditor 화면이 Preview & Test 화면으로 전환된다.
PERSIST – Preview & Test 화면 -
생성된 input_txt 입력변수에 ‘ename’ 값을 입력한 후 Preview & Test 화면에 있는 [테스트] 버튼을 클릭한다. 이 버튼은 해당 DBIO 쿼리가 제대로 작성되었는지 테스트하는 역할을 수행한다. DBIO 쿼리가 제대로 작성되었다면 다음과 같은 결과 창이 나타난다.
PERSIST – 테스트 결과 창 -
테스트를 완료한 후 [ResutSet] 탭을 클릭하기 전에 Preview & Test 화면에 있는 [Excute Plan 보기] 버튼을 클릭한다. 이 버튼의 기능은 해당 DBIO 쿼리의 실행 계획 정보를 보여주는 역할을 수행한다.
PERSIST – 실행플랜 보기 결과 화면 -
작성된 DBIO 쿼리에 문제가 없는 경우 Preview & Test 화면에 있는 [ResultSet] 탭을 선택한다. 탭을 선택하면 input_txt 입력변수에 입력된 ‘ename’ 값에 따라 다음과 같은 결과가 나타난다.
PERSIST – ResultSet 결과 화면
4.2. VIEW
VIEW 쿼리 타입의 DBIO 쿼리를 작성하는 시나리오는 다음과 같다.
-
DBIO 기본 정보를 등록한다.
설정 항목 등록 예 리소스 그룹
DBIO_C
쿼리 타입
VIEW
Exec 타입
SELECT
대상 테이블
DEV_RESOURCE
논리명
DBIO_View _logical
물리명
DBIO_View
-
작성할 쿼리를 [SQL] 탭에 입력한다.
-
작성된 쿼리를 기준으로 출력변수를 생성한다.
-
생성된 DBIO 쿼리를 확인하고 테스트한다.
-
SQL 미리 보기
-
테스트 및 실행플랜 보기
-
ResultSet 보기
-
DBIO 저장
-
다음은 위에서 정의한 시나리오대로 수행하는 예제이다.
-
작업영역 네비게이터에서 오른쪽 마우스 버튼을 클릭한 후 [New] > [DBIO 쿼리] 메뉴를 선택한다.
-
새로운 쿼리 작성 대화상자에 DBIO의 기본 정보를 등록한 후 [완료] 버튼을 클릭한다.
VIEW – 새로운 쿼리 작성 대화상자 -
VIEW 쿼리 타입의 DBIO 편집기 화면이 나타난다.
VIEW – DBIO 편집기 화면VIEW 쿼리 타입의 DBIO 편집기에서는 개발자가 직접 쿼리를 작성해야 한다. 쿼리 타입과 상관없이 DBIO 편집기 화면에 공통으로 나타나는 영역과 각 항목에 대한 설명은 DBIO 편집기 사용을 참고한다.
-
본 예제에서는 다음과 같은 쿼리를 [SQL] 탭에 입력한다.
SELECT RESOURCE_ID ,PHYSICAL_NAME ,LOGICAL_NAME ,RESOURCE_TYPE ,DESCRIPTION FROM DEV_RESOURCE WHERE PHYSICAL_NAME = :input_txt
[SQL] 탭은 일반적인 SQL 쿼리 구문을 작성하는 영역이다.
VIEW – [SQL] 탭다음은 탭에 있는 버튼에 대한 설명이다.
버튼 설명 [페이지 적용(Page)]
쿼리 실행 결과 데이터가 많은 경우 특정 단위 즉 결과 데이터 개수를 페이지 단위로 나누어 결과 값을 가져오고 싶을 때 실행한다. 이 버튼을 클릭하면 작성된 쿼리에 추가적으로 쿼리가 삽입된다.
[페이징 적용(Rownum)]
쿼리 실행 결과 데이터가 많은 경우 결과 데이터 중에서 시작 Row와 마지막 Row를 설정하여 특정 부분의 Row를 가져올 때 실행한다.
[메타정보 동기화]
WebAdmin에 정의된 메타 정보와 동기화한다.
위와 같은 쿼리를 작성하면 입력변수는 자동으로 생성되며 다음과 같이 [입력 변수] 탭에 나타난다.
VIEW – [입력 변수] 탭 -
VIEW – [SQL] 탭에서 작성된 쿼리를 기준으로 출력변수를 생성한다.
VIEW – 출력변수 생성 전 화면다음은 [출력 변수] 탭의 각 항목에 대한 설명이다.
항목 설명 컬럼 그리드
DBIO 편집기 사용에서 언급한 내용과 동일하다.
입력값 자동설정
[출력 변수 생성] 버튼을 클릭하면 입력 값에 따라 변경될 수 있어 임의의 값을 미리 입력받는데 이 과정을 자동으로 설정하는 기능이다.
기본 설정은 입력 값을 자동설정 하도록 체크박스가 선택되어 있다.
출력 변수 생성
[출력 변수 생성] 버튼을 클릭하면 [SQL] 탭에 작성된 쿼리를 기준으로 컬럼 그리드에 자동으로 출력변수가 생성된다.
출력변수는 SELECT/FETCH Exec 타입의 실행 결과 컬럼을 뜻한다.
다음은 출력변수 탭의 주요 항목에 대한 설명이다.
-
입력값 자동설정
만약 선택된 '입력값 자동 설정' 체크박스를 해제하고 [출력 변수 생성] 버튼을 클릭하면 아래 그림과 같이 변수 입력 대화상자가 나타난다.
변수 입력 대화상자는 지정된 입력변수의 값을 설정할 수 있다.
VIEW – 변수 입력 대화상자
VIEW – 출력변수 생성 후 화면VIEW 쿼리 타입의 DBIO를 생성하는 경우 출력변수를 생성하지 않으면 컴파일할 때 오류가 발생되므로 반드시 출력변수를 생성해야 한다. 생성된 출력변수의 메타 ID 정보가 없는 경우 해당 메타 ID 컬럼을 선택하여 메타 ID를 만들 수 있다.
다음은 메타 ID 컬럼을 선택한 후 [..] 버튼을 클릭해서 메타 ID를 만드는 방법의 예이다.
메타 ID 등록다음은 각 항목에 대한 설명이다.
항목 등록 예 물리명
메타 ID의 물리명을 입력한다.
논리명
메타 ID의 논리명을 입력한다.
Group
해당 메타 ID가 속할 리소스 그룹명을 입력한다.
설명
메타 ID에 대한 부가 설명을 입력한다.
데이터 타입
메타 ID의 데이터 타입을 선택한다.
길이
메타 ID의 길이를 입력한다.
-
-
위와 같이 생성된 DBIO 쿼리를 확인하고 테스트한다.
PERSIST에서 설명했듯이 작성된 DBIO 쿼리를 확인하고 테스트하는 과정은 동일하므로 추가로 설명하지 않는다.
4.3. EXECSQL
EXECSQL 쿼리 타입의 DBIO 쿼리를 작성하는 시나리오는 다음과 같다.
-
DBIO 기본 정보를 등록한다.
설정 항목 등록 예 리소스 그룹
DBIO_C
쿼리 타입
EXECSQL
Exec 타입
INSERT
대상 테이블
DEV_RESOURCE
논리명
DBIO_Execsql _logical
물리명
DBIO_Execsql
-
작성하고자 하는 쿼리를 작성한다.
쿼리를 작성하면 입력변수는 자동으로 생성된다.
-
생성된 DBIO 쿼리를 확인하고 테스트한다.
-
SQL 미리 보기
-
테스트 및 실행플랜 보기
-
ResultSet 보기
-
DBIO 저장
EXECSQL 쿼리 타입으로 생성된 DBIO는 PERSIST에서 작성할 수 없는 DML 쿼리를 작성할 수 있다. DML(Data Manipulation Language)은 데이터베이스에 저장된 자료를 검색, 삽입, 삭제, 갱신, 재구성하기 위해 사용되는 언어이다.
-
다음은 DML 쿼리를 작성하는 예이다.
-
서브 쿼리를 다른 테이블에 INSERT하는 경우
INSERT INTO TABLE1 SELECT * FROM TABLE2 WHERE ID=:id
-
Inline VIEW를 UPDATE하는 경우
UPDATE (SELECT COL1, COL2 FROM TABLE3) SET COL2=COL2+1
다음은 위에서 정의한 시나리오대로 수행하는 예제이다.
-
작업영역 네비게이터에서 오른쪽 마우스 버튼을 클릭한 후 [New] > [DBIO 쿼리] 메뉴를 선택한다.
-
다음과 같이 새로운 쿼리 작성 대화상자가 나타나면 DBIO의 기본 정보를 등록한 후 [완료] 버튼을 클릭한다.
EXECSQL – 새로운 쿼리 작성 대화상자 -
EXECSQL 쿼리 타입의 DBIO 편집기 화면이 다음과 같이 나타난다.
EXECSQL – DBIO 편집기 화면 -
본 예제에서는 다음과 같은 쿼리를 [SQL] 탭에 입력한다.
INSERT INTO DEV_RESOURCE SELECT * FROM DEV_RESOURCE_BAK WHERE RESOURCE_ID = :input_txt
EXECSQL – [SQL] 탭위와 같은 쿼리를 작성하면 입력변수는 자동으로 생성되며 다음과 같이 [입력 변수] 탭에 나타난다.
EXECSQL – [입력 변수] 탭 -
위와 같이 생성된 DBIO 쿼리를 확인하고 테스트한다. PERSIST에서 설명했듯이 작성된 DBIO 쿼리를 확인하고 테스트하는 과정은 동일하므로 추가로 설명하지 않는다.
4.4. DYNAMICSQL
DYNAMICSQL 쿼리 타입의 DBIO 쿼리를 작성하는 시나리오는 다음과 같다.
-
DBIO 기본 정보를 등록한다.
설정 항목 등록 예 리소스 그룹
DBIO_C
쿼리 타입
DYNAMICSQL
Exec 타입
SELECT
대상 테이블
DEV_RESOURCE
논리명
DBIO_Dynamicsql _logical
물리명
DBIO_Dynamicsql
-
작성할 쿼리를 작성한다. 쿼리를 작성하면 입력변수와 Dynamic 변수는 자동으로 생성된다.
-
작성된 쿼리를 기준으로 출력변수를 생성한다.
-
생성된 DBIO 쿼리를 확인하고 테스트한다.
-
SQL 미리 보기
-
테스트 및 실행플랜 보기
-
ResultSet 보기
-
DBIO 저장
-
|
DYNAMICSQL 쿼리 타입으로 생성된 DBIO는 Runtime에 쿼리를 변경하거나 Embedded SQL에서 처리되지 않는 쿼리를 작성할 수 있다. 전자의 경우 쿼리 안에 Dynamic 변수들을 지정하여 Runtime마다 지정된 Dynamic 변수 값을 바꿔서 실제 쿼리로 변경할 수 있다. Dynamic 변수의 형식은 입력변수와 유사하며 입력변수를 나타내는 콜론(:) 기호 대신에 ‘%’ 기호를 변수명 앞에 두면 된다. 다만 작은따옴표(‘ ’) 기호 안에 있는 ‘%’는 SQL의 정규 연산자이므로 무시하고 작성하면 된다. |
Dynamic 변수의 제약사항
Dynamic 변수에는 다음과 같이 몇 가지 제약사항이 있다.
-
Dynamic 변수 값에는 입력변수가 있으면 안 된다.
INSERT INTO TABLE1 (col1, col2) VALUES (:col1, %var1)
위 예제에서 ‘var1’는 ‘col2’와 동일한 값을 가질 수 없다.
-
SELECT 절로 조회할 항목을 Dynamic 변수로 설정하여 Runtime마다 조회할 항목을 변경할 수 있다. 하지만 조회한 값을 받을 변수명은 고정되어야 하므로 출력 항목을 Dynamic 변수로 설정한 경우에는 반드시 Alias를 붙여서 해당 값을 받아오는 변수명이 Alias를 따르도록 해야 한다.
다음은 정상적인 쿼리의 예이다.
SELECT %var1 AS id FROM TABLE1
다음은 잘못된 쿼리의 예이다.
SELECT %var1 FROM TABLE1 var1=“col1, col2”
-
출력 항목을 Dynamic 변수로 설정한 경우에도 해당 값을 받아낼 변수의 개수는 고정되어있으므로 반드시 Dynamic 변수 안에 들어가는 출력 항목의 개수와 Alias의 개수는 1:1 대응이 되어야 한다.
-
쿼리가 SELECT %var1 AS id FROM TABLE1인 경우
var1=“col1” 혹은 var1=“col2"
-
다음은 위에서 정의한 시나리오대로 수행하는 예제이다.
-
작업영역 네비게이터에서 오른쪽 마우스 버튼을 클릭한 후 [New] > [DBIO 쿼리] 메뉴를 선택한다.
-
다음과 같이 새로운 쿼리 작성 대화상자가 나타난다. DBIO의 기본 정보를 등록한 후 [완료] 버튼을 클릭한다.
DYNAMICSQL – 새로운 쿼리 작성 대화상자 -
DYNAMICSQL 쿼리 타입의 DBIO 편집기 화면이 다음과 같이 나타난다.
DYNAMICSQL – DBIO 편집기 화면 -
본 예제에서는 다음과 같은 쿼리를 [SQL] 탭에 입력한다.
SELECT RESOURCE_ID ,PHYSICAL_NAME ,LOGICAL_NAME ,RESOURCE_TYPE ,DESCRIPTION ,%var1 AS CDATE FROM DEV_RESOURCE WHERE PHYSICAL_NAME = :input_txt
DYNAMICSQL – [SQL] 탭 화면위와 같은 쿼리를 작성하면 입력변수는 자동으로 생성되며 다음과 같이 [입력 변수] 탭에 나타난다.
DYNAMICSQL – [입력 변수] 탭 화면 -
DYNAMICSQL – [SQL] 탭 화면에서 작성된 쿼리를 기준으로 [출력 변수] 탭에서 출력변수를 생성한다.
DYNAMICSQL – 출력변수 생성 전 화면다음은 각 항목에 대한 설명이다.
항목 설명 컬럼 그리드
DBIO 편집기 사용에서 언급한 내용과 동일하다.
입력값 자동설정
입력변수의 값을 미리 설정하는 기능이다.
기본 설정은 입력 값을 자동 설정하도록 체크박스가 선택되어 있다.
출력 변수 생성
[출력 변수 생성] 버튼을 클릭하면 [SQL] 탭에 작성된 쿼리를 기준으로 컬럼 그리드에 자동으로 출력변수가 생성된다.
다음은 [출력 변수] 탭의 주요 항목에 대한 설명이다.
-
출력 변수 생성
[출력 변수 생성] 버튼을 클릭하면 Dynamic Element 변수 입력 대화상자가 나타난다. Dynamic Element 변수 입력 대화상자는 지정된 Dynamic 변수의 값을 설정하는 역할을 수행한다.
출력변수를 생성하기 위해서는 반드시 Dynamic 변수에 해당 값을 입력해야 한다. 그렇지 않으면 출력변수가 생성되지 않는다.
DYNAMICSQL – Dynamic Element 변수 입력 대화상자[Dynamic 변수] 탭에서도 VIEW와 마찬가지로 Dynamic 변수의 메타 ID가 등록되어 있지 않을 경우 메타 ID를 만들 수 있다. 메타 ID를 등록하는 방법은 메타 ID 등록를 참고한다.
DYNAMIC – [Dynamic 변수] 탭Dynamic 변수가 포함된 쿼리를 작성하는 경우 위 그림과 같이 Dynamic 변수가 자동으로 생성된다. 그리고 Dynamic 변수 정보 중에 '길이', 'Decimal', '메타 ID', '설명'은 수정이 가능하다.
DYNAMIC – 출력변수 생성 후 화면
-
-
위와 같이 생성된 DBIO 쿼리를 확인하고 테스트한다. PERSIST에서 설명했듯이 작성된 DBIO 쿼리를 확인하고 테스트하는 과정은 동일하므로 추가로 설명하지 않는다.
5. DBIO 저장, 소스 생성, 컴파일, Dlupdate
작성된 DBIO 쿼리를 저장, 컴파일하는 과정은 크게 4단계로 진행된다.
-
저장
DBIO 쿼리 정보 및 입출력 구조체 정보를 저장한다. 이때 쿼리의 변경으로 인하여 입/출력 구조체의 항목(이름, 타입, 크기, 순서 등)이 변경될 경우 개발자로 하여금 입/출력 정보가 변경되었다는 알림창을 띄워준다.
입/출력 구조체 변경 알림창 -
소스 생성
~.pc 파일이 생성된다. 단, 확장자는 DB 제품에 따라 상이할 수 있다.
-
컴파일
-
~.pc 파일을 precompile한 후 ~.c 파일이 생성된다.
-
~.c 파일을 컴파일한 후 ~.o 파일이 생성된다.
-
~.o 파일을 해당 ~.so 파일에 추가하여 하나의 파일로 묶는다.
-
-
Dlupdate
마지막으로 생성된 ~.so 파일을 Dlupdate한 후 DBIO 모듈을 동작 가능한 상태로 준비한다.
다음은 작성된 DBIO 쿼리를 컴파일하는 절차이다.
-
작업영역 내비게이터에서 생성한 DBIO 리소스를 선택한 후 오른쪽 마우스 버튼을 클릭한다. 아래 그림과 같은 서브 메뉴가 나타나며 컴파일을 수행하기 위해 [Compile Resource] 메뉴를 선택한다.
[Compile Resource] 메뉴 -
[Compile Resource] 메뉴를 선택하면 선택된 DBIO 리소스가 컴파일될 뿐만 아니라 Dlupdate도 함께 수행된다. DBIO 리소스를 선택한 후 <ALT> + C 단축키를 누르거나 컴파일 아이콘을 클릭하면 해당 메뉴를 선택했을 때와 동일하게 DBIO 리소스를 컴파일할 수 있다.
컴파일을 하는 동안 진행상태를 표시하는 Compile Resource 창이 나타난다.
Compile Resource 창 -
컴파일 작업 수행 중 [WebAdmin] > [환경설정] > [DBIO]에서 'CHECK_DBIO_LINKING_LIST' 옵션이 'TRUE’인 경우 컴파일 대상 DBIO와 함께 SO로 생성되는 DBIO의 목록을 다음과 같이 뷰를 통해 확인할 수 있다. CHECK_DBIO_LINKING_LIST 옵션을 설정하지 않거나 'FALSE’로 설정한 경우 화면은 보이지 않는다.
Linking Resource List 화면 -
정상적으로 컴파일이 완료되면 다음과 같이 컴파일 로그가 콘솔에 나타난다.
Compile Resource – 콘솔위 그림에서 나타나는 정보 중의 ExitCode가 0이 아닌 경우는 오류이다. 예를 들어 1, 2번 과정을 거친 후 오류가 나는 경우 작성한 DBIO 자체에 오류가 발생된 것이므로 다시 각 항목을 확인하거나 작성된 쿼리를 복사해서 다른 데이터베이스관련 툴에서 실행하여 본다.
그리고 4번 과정 이후에 발생된 오류는 작성한 DBIO는 성공적으로 만들어졌으나 하나의 라이브러리로 묶이는 동일 테이블을 사용하는 다른 DBIO에 오류가 발생했거나 컴파일이 제대로 되지 않아서 발생하는 오류이다. 다시 말하면 하나의 라이브러리로 묶는 과정에서 오류가 발생한 것이다(오류가 발생하는 경우 해당 DBIO 목록이 나타난다). 이를 해결하기 위해서는 오류가 난 DBIO를 다시 작성하거나 컴파일 과정을 각각 수행해야 한다.