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.
|