Обсуждение: what's going on...

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

what's going on...

От
"Lukasz Feldman"
Дата:
Hello!

I was trying to create a function:

CREATE FUNCTION analizuj_pomiary() RETURNS bool AS '
DECLARE pomiary RECORD;
BEGIN
     FOR pomiary IN SELECT * FROM brewan_pomiar LOOP

       IF substr(pomiary.datetime,1,10)=to_char(now(),'mm/dd/yyyy')
       THEN
          INSERT INTO TESTOWA
          VALUES (
         analizuj_flow(
         pomiary.ipRouter,
         pomiary.source_ip,
         pomiary.dest_ip,
         pomiary.bytes,
         pomiary.datetime)
         );
       END IF;

     END LOOP;
 RETURN true;
END; ' LANGUAGE 'plpgsql';

... and I received an error:

ERROR:  parser: parse error at or near "mm"

What's going on? What does it mean?

-----
Łukasz Feldman, Konsultant
Zespol Konsultantow ds. Systemów Zarzadzania Sieciami i Systemami
Telekomunikacyjnymi;
ATM S.A., ul. Grochowska 21a, 04-186 Warszawa, POLAND
tel  (+48 22) 5156332, fax (+48 22) 5156146, mobile (+48) 607 167 634 ,
http://www.atm.com.pl





Re: what's going on...

От
Jason Earl
Дата:
You need to escape single quotes "'" in plpgsql functions.  The
correct function should look like this:

CREATE FUNCTION analizuj_pomiary() RETURNS bool AS '
DECLARE pomiary RECORD;
BEGIN
     FOR pomiary IN SELECT * FROM brewan_pomiar LOOP

       IF substr(pomiary.datetime,1,10)=to_char(now(),''mm/dd/yyyy'')
       THEN                                            ^           ^
          INSERT INTO TESTOWA                          |           |
          VALUES (                                     |           |
         analizuj_flow(                                |           |
         pomiary.ipRouter,                             |           |
         pomiary.source_ip,                            +-----+-----+
         pomiary.dest_ip,                                    |
         pomiary.bytes,                                      |
         pomiary.datetime)                                   |
         );                        Look at US!!
       END IF;

     END LOOP;
 RETURN true;
END; ' LANGUAGE 'plpgsql';

Jason

"Lukasz Feldman" <lukasz@atm.com.pl> writes:

> Hello!
>
> I was trying to create a function:
>
> CREATE FUNCTION analizuj_pomiary() RETURNS bool AS '
> DECLARE pomiary RECORD;
> BEGIN
>      FOR pomiary IN SELECT * FROM brewan_pomiar LOOP
>
>        IF substr(pomiary.datetime,1,10)=to_char(now(),'mm/dd/yyyy')
>        THEN
>           INSERT INTO TESTOWA
>           VALUES (
>          analizuj_flow(
>          pomiary.ipRouter,
>          pomiary.source_ip,
>          pomiary.dest_ip,
>          pomiary.bytes,
>          pomiary.datetime)
>          );
>        END IF;
>
>      END LOOP;
>  RETURN true;
> END; ' LANGUAGE 'plpgsql';
>
> ... and I received an error:
>
> ERROR:  parser: parse error at or near "mm"
>
> What's going on? What does it mean?
>
> -----
> Łukasz Feldman, Konsultant
> Zespol Konsultantow ds. Systemów Zarzadzania Sieciami i Systemami
> Telekomunikacyjnymi;
> ATM S.A., ul. Grochowska 21a, 04-186 Warszawa, POLAND
> tel  (+48 22) 5156332, fax (+48 22) 5156146, mobile (+48) 607 167 634 ,
> http://www.atm.com.pl
>
>
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org