2016-05-11 9 views
0

Ich habe den folgenden Code, das ist die geschrumpfte Version der Funktion für den Trigger auf dem Tisch i den Auslöser anwenden möchten, die Tabelle hat tatsächlich viele Felder:Postgres Syntaxfehler in der Nähe, wenn

Create OR REPLACE FUNCTION PRC_EPV_() 
RETURNS trigger AS $PRC_EPV_$ 

begin 

    Declare BaseCount bigint default 0; 
    Declare PeakCount bigint default 0; 
    Declare BaseSUM DOUBLE PRECISION default 0; 
    Declare PeakSum DOUBLE PRECISION default 0; 

    IF new.epv_kw_1 IS NOT NULL THEN 
     set BaseSum = BaseSum + new.EPV_KW_1; 
     set BaseCount = BaseCount + 1; 
    END if; 

    IF new.EPV_KW_38 IS NOT NULL Then 
     set BaseSum = BaseSum + new.EPV_KW_38; 
     set PeakSum = PeakSum + new.EPV_KW_38; 
     set BaseCount = BaseCount + 1; 
     set PeakCount = PeakCount + 1; 
    END if; 
    IF new.EPV_KW_91 IS NOT NULL Then 
     set BaseSum = BaseSum + new.EPV_KW_91; 
     set BaseCount = BaseCount + 1; 
    END if; 

    set new.EPV_Peak_Sum = PeakSum ; 
    set new.EPV_Base_Sum = BaseSum ; 

    IF PeakCount > 0 Then 
     set new.EPV_Peak_AVE = new.EPV_peak_Sum/PeakCount * 4; 
    END if; 

    IF BaseCount > 0 Then 
    set new.EPV_Base_AVE = new.EPV_base_Sum/BaseCount * 4; 
    END if; 

    RETURN NEW; 
    END; 
$PRC_EPV_$ LANGUAGE plpgsql; 

pgAdmin SQL Editor sagt mir eRROR: Syntaxfehler bei oder in der Nähe von „IF“ LINE 11: IF new.epv_kw_1 IS NOT NULL

DANN

für das Leben von mir kann ich nicht arbeiten, warum ich versucht, die Bedingungsanweisung ersetzt mit ‚true ',' 1 ',' -1 ',' 1 = 1 'die ganze Zeit gibt es den gleichen Syntaxfehler in der Nähe von IF

Antwort

0

versuchen

RETURNS trigger AS $PRC_EPV_$ 

begin 

    Declare BaseCount bigint default 0; 
    Declare PeakCount bigint default 0; 
    Declare BaseSUM DOUBLE PRECISION default 0; 
    Declare PeakSum DOUBLE PRECISION default 0; 

    IF new.epv_kw_1 

in

RETURNS trigger AS $PRC_EPV_$ 
Declare 
    BaseCount bigint default 0; 
    PeakCount bigint default 0; 
    BaseSUM DOUBLE PRECISION default 0; 
    PeakSum DOUBLE PRECISION default 0; 
begin 
    IF new.epv_kw_1 
+0

einfach auf am Ende ändert, sorry, im noch hing über auf der mySQL Ordnung der Dinge :) – sjwbond

+0

scheint, Sie sind sehr willkommen - ich bin immer noch Hinzufügen von NOLOGGING zum Ende manchmal :) –