Intebase와 Firebird 사용간 작업을 정리해 놓은 내용에 주석을 덧데어 글을 남김니다.
아무조록 작은 도움이 되었으면 좋겠네요.
차례
0 환경
1 자료
1.1 링크
1.2 서적
1.3 Tool
2 사용
0 환경 #
* Firebird 2.0 Rc2 / Intebase 7.5
1 자료 #
1.1 링크 #
* 파이어버드 포럼 (
http://firebird.borlandforum.com/ ) - 국내에서 가장 활발한 포럼입니다. 많은 제야의 고수님들이 도움을 줍니다.
* 야옹님 홈페이지 (
http://www.cool4u.co.kr/v1/ ) - Firebird 1.5 완벽 활용 가이드를 집필한 박정훈님의 홈페이지 입니다.
* 데이타 베이스 사랑넷 (
http://database.sarang.net/ ) - Firebird가 카테고리에 추가 되었습니다.
1.2 서적 #
* Firebird 1.5 완벽 활용 가이드 / 한스컨텐츠 / 박정훈 - 개인적으로 큰 도움을 얻었던 책입니다. 국내 유일의 Firebird / Interbase 서적. 볼랜드 포럼에서 이벤트도 진행중입니다. ㅡ0-;;
1.3 Tool #
* IBExpert - MS-SQL의 엔터프라이즈 관리자 + 쿼리 분석기 같은 도구 입니다.
Ctrl + F12 - 스크립트 실행창
F12 - 쿼리 분석기
F9 - 실행
2 사용 #
* Create Shadow - 전 백업 대신 쉐도우를 만들어 두었습니다. 쉐도우는 원본 DB파일이 깨지면 자동으로 쉐도우를 사용한다고 합니다. 아직 초기라 테스는 ... 안했습니다. ㅡㅡ;;
------------------------------------------------------------------------------------------------------------------------------
CREATE SHADOW 1 AUTO 'C:\Documents and Settings\Administrator\My Documents\FireBird_BackUp\EA.shd';
------------------------------------------------------------------------------------------------------------------------------
* Create Boolean - Boolean 타입이 존재 하지 않아 만들어 사용해야 합니다.
------------------------------------------------------------------------------------------------------------------------------
CREATE DOMAIN BOOLEAN AS CHAR
DEFAULT 'F' NOT NULL
CHECK (VALUE IN ('T', 'F'))
------------------------------------------------------------------------------------------------------------------------------
* Create Table - 테이블 생성은 크게 다르지 않습니다. 다만 MS-SQL처럼 자동증가 타입을 지원하지 않습니다. 그리하여 아래와 같이 트리거를 생성해서 Insert 시점에 트리거가 증가값을 넣어 주어야 합니다.
------------------------------------------------------------------------------------------------------------------------------
CREATE TABLE W_Table
(
W_SEQ INTEGER NOT NULL
, W_DT VARCHAR(14) NOT NULL
, W_Val NUMERIC(8,3) NOT NULL
, PRIMARY KEY (WE_SEQ, WE_DT)
);
CREATE GENERATOR WEATHER_RAW_SEQ_GEN;
SET GENERATOR WEATHER_RAW_SEQ_GEN TO 0;
CREATE TRIGGER SET_WEATHER_RAW_SEQ FOR WEATHER_RAW
BEFORE INSERT AS
BEGIN
NEW.WEATHER_SEQ = GEN_ID(WEATHER_RAW_SEQ_GEN, 1);
END;
------------------------------------------------------------------------------------------------------------------------------
* Create SP 1 - SP사용간 트리거를 사용하는 열은 비워 놓고 작업을 진행합니다.
------------------------------------------------------------------------------------------------------------------------------
SET TERM ^ ;
CREATE OR ALTER PROCEDURE INSERT_W (
S_Dt VARCHAR(14),
N_Val NUMERIC(8,3))
BEGIN
/* RAW */
INSERT INTO W_Table (W_DT, W_Val)
VALUES (:S_Dt, :N_Val);
END^
SET TERM ; ^
------------------------------------------------------------------------------------------------------------------------------
* Create SP 2
- 결과물을 가져오기를 원하면 Suspend를 넣어줘야 합니다.
- 아래 SP에 FOR - Select 문이 두개 있는데 SP를 수행하면 두개 쿼리 문의 결과가 세로 방향으로 붙어 나옵니다.
------------------------------------------------------------------------------------------------------------------------------
SET TERM ^ ;
CREATE OR ALTER PROCEDURE SELECT_R (
S_DT VARCHAR(12))
RETURNS (
N_Val NUMERIC(8,3))
AS
BEGIN
FOR
SELECT Max(W_Val) From W_Table Where W_Dt = :S_DT
Into :N_Val
DO BEGIN
SUSPEND;
END
FOR
SELECT Sum(W_Val) From W_Table Where W_Dt = :S_DT
Into :N_Val
DO BEGIN
SUSPEND;
END
END^
SET TERM ; ^
------------------------------------------------------------------------------------------------------------------------------
많이 미숙합니다. 내용중 잘못되거나 수정해야할 부분이 있으면 가감없는 덧글 부탁드리겠습니다.