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