어쩌면 interbase의 사용자 설명서나 데모 gdb화일에조차 generator는 진짜로 설명이 엉성하게 나와있는게 사실입니다.
저도 몇년전 처음 ib를 사용할때 초기 몇달은 확실하게 generator사용방법을 못찾아서 무지 애먹은적이 있거든요. 결국 영어사이트를 3박4일 뒤져서 제대로 되는 방법을 찾아내서 지금껏 잘 사용하고 있는 방법이 있읍니다. 간단하지는 않지만 한번 익혀두심 ib를 쓰시는 동안은 반드시 사용하게 될 것입니다.
먼저 ddl정의 text화일로 GDB의 structure를 만들때 예:
CREATE TABLE WORKER (WOID INTEGER NOT NULL,
USERID CHAR(20) NOT NULL,
USERPW CHAR(10) NOT NULL,
CONSTRAINT PK_WORKER PRIMARY KEY (WOID)); <= 여기까지는 기본 table만드는 부분
CREATE GENERATOR WOID; <- 먼저 generator를 만든다
CREATE PROCEDURE NEW_WOID AS BEGIN EXIT; END <- 프로시저 선언문
ALTER PROCEDURE NEW_WOID RETURNS (ID INTEGER) AS <- 프로시저 함수 내용
BEGIN
ID = GEN_ID (WOID, 1);
END
그리고 Program 안에서 사용 예;
function GenKeyVal(const s: String): LongInt; <- 다음과 같은 함수를 아무
Interbase 6.0을 사용해서 작업중입니다.. 그런데.. 어쩌다보니 선언되어있는 어느 generator의 값을 알아야 하는 사태가 벌어졌습니다-_-; Interbase관련 서적 몇개를 뒤져봐도.. SQL문에서 generator의 값을 알아내는 것은 전-혀 나오지...
감초
•
2001.05.04 02:35
어쩌면 interbase의 사용자 설명서나 데모 gdb화일에조차 generator는 진짜로 설명이 엉성하게 나와있는게 ...
프롬프트
•
2001.05.03 01:19
인프라이즈 뉴스그룹 서치엔진입니다.
이곳에서 generator로 검색해보셔서 해당되는 내용이 있나 살펴보...
저도 몇년전 처음 ib를 사용할때 초기 몇달은 확실하게 generator사용방법을 못찾아서 무지 애먹은적이 있거든요. 결국 영어사이트를 3박4일 뒤져서 제대로 되는 방법을 찾아내서 지금껏 잘 사용하고 있는 방법이 있읍니다. 간단하지는 않지만 한번 익혀두심 ib를 쓰시는 동안은 반드시 사용하게 될 것입니다.
먼저 ddl정의 text화일로 GDB의 structure를 만들때 예:
CREATE TABLE WORKER (WOID INTEGER NOT NULL,
USERID CHAR(20) NOT NULL,
USERPW CHAR(10) NOT NULL,
CONSTRAINT PK_WORKER PRIMARY KEY (WOID)); <= 여기까지는 기본 table만드는 부분
CREATE GENERATOR WOID; <- 먼저 generator를 만든다
CREATE PROCEDURE NEW_WOID AS BEGIN EXIT; END <- 프로시저 선언문
ALTER PROCEDURE NEW_WOID RETURNS (ID INTEGER) AS <- 프로시저 함수 내용
BEGIN
ID = GEN_ID (WOID, 1);
END
그리고 Program 안에서 사용 예;
function GenKeyVal(const s: String): LongInt; <- 다음과 같은 함수를 아무
var <- global용으로 선언
p: TStoredProc;
begin
p := TStoredProc.create(nil);
p.DataBaseName := 'AppDB';
p.StoredProcName := 'NEW_' + s;
p.Prepare;
p.ExecProc;
Result := p.params[0].asinteger;
p.free;
end;
그리고 필요한 부분에서 다음과 같이 사용.
procedure TDataMod1.qWOAfterInsert(DataSet: TDataSet);
begin
qWOWOID.Value := GenKeyVal('WOID'); <= 요기가 중요한 부분입니다.
end;
위 예는 tquery에서 레코드를 삽입시 자동으로 WOID 필드를 하나씩 올려주는 부분이지요.
하지만 i := GenKeyVal('WOID'); 처럼 사용할수도 있읍니다.
도움이