Обсуждение:

Поиск
Список
Период
Сортировка

От
"Ismail Kizir"
Дата:
Hi all,

I need more information and examples for pl/pgsql.
The examples found on the source tree of postgres are not sufficient,
because they are all alphanumerical examples. I need function examples for
numerical computations.
I tried to code the example below but it responded with error message
something like '$= operator not defined for types int4 and float8 ...'

Thanks in advance.
Ismail Kizir

CREATE FUNCTION fCurr (date, int2, float8, int2) RETURNS float8  AS ' DECLARE      fcDate ALIAS FOR $1;        --
Conversiondate      fromCurrID ALIAS FOR $2;  -- Which currency to convert      Amount ALIAS FOR $3;       -- Amount to
convert     toCurrID ALIAS FOR $4;      -- Convert to which currency?      BolenCarpan float8;      BolunenCarpan
float8;BEGIN    IF fromCurrID = toCurrID THEN      RETURN Amount; -- If source and destination are the same, the
result
is the input amount   END IF;
   IF fromCurrID = 1 THEN  -- If we convert the national currency     BolunenCarpan = 1;   ELSE      SELECT Rate FROM
CurrDailyINTO BolunenCarpan WHERE cDATE = fcDate
 
AND CurrID::int2=fromCurrID::int2;      IF NOT FOUND THEN         RAISE EXCEPTION ''Currency info for % #%d not
found'',fcDate,fromCurrID      END IF;   END IF;
    IF toCurrID = 1 THEN  -- If we convert to national currency       BolenCarpan = 1;   ELSE       SELECT Rate FROM
CurrDailyINTO BolenCarpan WHERE cDATE = fcDate AND
 
CurrID::int2=toCurrID::int2;       IF NOT FOUND THEN         RAISE EXCEPTION ''Currency info for % #%d not
found'',fcDate,fromCurrID       END IF;   END IF;   RETURN Amount*BolunenCarpan/BolenCarpan;
END;
' LANGUAGE 'plpgsql';



Re: [SQL] Date: Wed, 29 Sep 1999 23:49:15 +0300

От
Tom Lane
Дата:
"Ismail Kizir" <ikizir@teklan.com.tr> writes:
> I tried to code the example below but it responded with error message
> something like '$= operator not defined for types int4 and float8 ...'

That's a known bug in plpgsql.  You can work around it by putting spaces
acround the '=' operator (you may need them around other operators too).

I assume it'll get fixed properly for 6.6...
        regards, tom lane