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

FireBird Q&A
[2036] 파이어 버드 프로시져 생성중에 질물 올립니다.
GomSun2 [vhrvnd723] 2006 읽음    2006-06-14 14:56
CREATE PROCEDURE INPUT_WEATHER (
    sDateTime       VARCHAR(14),           
    sWindDirection  VARCHAR(10),         
    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 nAvgWinDirection    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,
            sWindDirection,
            fWindSpeed,
            fTemperature,
            nHumidity,
            nAirPressure,
            fSolarRadiation,
            fSeaTemperature
           );

   
    SELECT WEATHER_SEQ FROM WEATHER_10MIN
    WHERE   WEATHER_DT = SUBSTR(:sDateTime, 1, 12);
    :nRowCnt = ROW_COUNT;

    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) || '59')
    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

카운터에 따라 선별적으로 저장할려고 합니다.
-------------------------------------------------------
    SELECT WEATHER_SEQ FROM WEATHER_10MIN
    WHERE   WEATHER_DT = SUBSTR(:sDateTime, 1, 12);
    :nRowCnt = ROW_COUNT;
-------------------------------------------------------
select 문에서 오류가 발생합니다.
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 45, char 51.
;.
그리하여 where절 뒤에 " ; "를 제거하면 아래
:nRowCnt 에서 에러가 발생합니다.

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 46, char 5.
nRowCnt.

+ -

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