FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[2038] Re: 해결했습니다만 다른 부분에서 질문 올리겠습니다.
GomSun2 [vhrvnd723] 1541 읽음    2006-06-14 17:39
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 ; ^

+ -

관련 글 리스트
2036 파이어 버드 프로시져 생성중에 질물 올립니다. GomSun2 2006 2006/06/14
2038     Re: 해결했습니다만 다른 부분에서 질문 올리겠습니다. GomSun2 1541 2006/06/14
2039         Re:Re: 해결했습니다 GomSun2 1478 2006/06/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.