database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
ㆍFirebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Firebird Q&A 97 게시물 읽기
No. 97
프로시져 생성간 트리거 사용에 관해 질문 올립니다.
작성자
장정환(vhrvnd723)
작성일
2006-06-14 20:39ⓒ
2006-06-14 21:26ⓜ
조회수
9,016

안녕하세요

firebird 2.0, IBExpert 환경에서 프로시져를 만들고 있는데 해결되지 않는 점이 있어 문의 글을 남김니다.

 

제가 프로시져에서 할려고 하는 것은

- insert할때 작성된 트리거를 사용하여 일련번호를 부여 해줄려고 하는 것입니다.

문제는

- 트리거는 작성되어 있는데 프로져 생성간 해당 트리거를 알수 없다고 ㅡ_ㅜ

- 해당 트리거는 SET_WEATHER_RAW_SEQ 이넘입니다.

 

도움 요청드리겠습니다. (_ _)

 

 

---------------------------------------------------

테이블

---------------------------------------------------

CREATE TABLE WEATHER_RAW

(

 

WEATHER_SEQ INTEGER NOT NULL

, WEATHER_DT VARCHAR(14) NOT NULL

, WIND_DIRECTION NUMERIC(8,3) NOT NULL

, WIND_SPEED NUMERIC(8,3) NOT NULL

, TEMPERATURE NUMERIC(8,3) NOT NULL

, HUMIDITY INTEGER NOT NULL

, AIR_PRESSURE INTEGER NOT NULL

, SOLAR_RADIATION NUMERIC(8,3) NOT NULL

, SEA_TEMPERATURE NUMERIC(8,3) NOT NULL

 

, PRIMARY KEY (WEATHER_SEQ, WEATHER_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;

 

-------------------------

프로시져

-------------------------

SET TERM ^ ;

 

CREATE PROCEDURE INPUT_WEATHER (

sDateTime VARCHAR(14),

fWindDirection NUMERIC(8,3),

fWindSpeed NUMERIC(8,3),

fTemperature NUMERIC(8,3),

nHumidity INTEGER,

nAirPressure INTEGER,

fSolarRadiation NUMERIC(8,3),

fSeaTemperature NUMERIC(8,3)

)

AS

DECLARE VARIABLE nRowCnt INTEGER; /* 검색된 열 */

DECLARE VARIABLE nAvgWindDirection SMALLINT;

DECLARE VARIABLE fAvgWindSpeed NUMERIC(8,3);

DECLARE VARIABLE fAvgTemperature NUMERIC(8,3);

DECLARE VARIABLE nAvgHumidity SMALLINT;

DECLARE VARIABLE nAvgAir_Pressure SMALLINT;

DECLARE VARIABLE fAvgSolar_Radiation NUMERIC(8,3);

DECLARE VARIABLE fAvgSeaTemperature NUMERIC(8,3);

BEGIN

/* 기초 테이블에 입력 */

INSERT INTO WEATHER_RAW

VALUES (SET_WEATHER_RAW_SEQ,

sDateTime,

fWindDirection,

fWindSpeed,

fTemperature,

nHumidity,

nAirPressure,

fSolarRadiation,

fSeaTemperature

);

 

SELECT COUNT(WEATHER_DT) FROM WEATHER_10MIN

WHERE WEATHER_DT = SUBSTR(:sDateTime, 1, 12) INTO :nRowCnt;

 

 

SELECT AVG(WIND_DIRECTION),

AVG(WIND_SPEED),

AVG(TEMPERATURE),

AVG(HUMIDITY),

AVG(AIR_PRESSURE),

AVG(SOLAR_RADIATION),

AVG(SEA_TEMPERATURE)

FROM WEATHER_RAW

WHERE WEATHER_DT BETWEEN (SUBSTR(:sDateTime, 1, 12) || '00')

AND

(SUBSTR(:sDateTime, 1, 12) || '09')

INTO :nAvgWindDirection, :fAvgWindSpeed, :fAvgTemperature,

:nAvgHumidity, :nAvgAir_Pressure, :fAvgSolar_Radiation,

:fAvgSeaTemperature;

 

IF (nRowCnt > 0) THEN

BEGIN

 

UPDATE WEATHER_10MIN

SET WIND_DIRECTION = :nAvgWindDirection,

WIND_SPEED = :fAvgWindSpeed,

TEMPERATURE = :fAvgTemperature,

HUMIDITY = :nAvgHumidity,

AIR_PRESSURE = :nAvgAir_Pressure,

SOLAR_RADIATION = :fAvgSolar_Radiation,

SEA_TEMPERATURE = :fAvgSeaTemperature

WHERE WEATHER_DT = SUBSTR(:sDateTime, 1, 12);

END

ELSE BEGIN

 

INSERT INTO WEATHER_10MIN

VALUES (SET_WEATHER_10MIN_SEQ,

SUBSTR(:sDateTime, 1, 12),

:nAvgWindDirection,

:fAvgWindSpeed,

:fAvgTemperature,

:nAvgHumidity,

:nAvgAir_Pressure,

:fAvgSolar_Radiation,

:fAvgSeaTemperature

);

END

 

 

SUSPEND;

 

END

 

^

SET TERM ; ^

이 글에 대한 댓글이 총 1건 있습니다.

insert 할때는 트리거의 이름을 넣어 주는 것이 아니었습니다.

해당 컬럼을 비워놓으면 트리거가 알아서 insert해주더군요

(_ _)

장정환(vhrvnd723)님이 2006-06-15 00:30에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
104[질문] Oracle의 DESC에 해당하는게 파이어버드에 있나요? [2]
이준식
2006-09-04
9382
103[질문] 파이어버드에서 해당 DB의 전체 테이블을 최적화 시키는.. [4]
이준식
2006-08-28
9473
101interbase 관련 질문입니다. [1]
지재규
2006-08-16
8039
97프로시져 생성간 트리거 사용에 관해 질문 올립니다. [1]
장정환
2006-06-14
9016
93vc++ 2005 express에서 FB 접근하는 방법이 있는지요? [3]
mini
2006-05-03
8356
92사용자생성과디비생성에러 [3]
김영진
2006-04-30
7288
91디비생성에러 [1]
김영진
2006-04-29
7506
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다