Обсуждение: Re: ERROR: syntax error at or near "IF"... why?
On 30 Apr, 07:30, Johan Nel <johan555.nel...@xsinet555.co.za> wrote:
> Daniel,
>
> > IF (SELECT credit FROM users WHERE name = 'mary') < 0 THEN
> > ROLLBACK;
> > END IF
> > COMMIT;
>
> > i always get the error
> > ERROR: syntax error at or near "IF"
>
> > Where am i mistaken?
>
> SELECT returns in essence a record or setof records.
>
> DECLARE _credit int;
> ...
> SELECT credit FROM users WHERE name = 'mary' INTO _credit;
> IF _credit < 0 THEN
> ROLLBACK;
> END IF;
>
> If there is a chance that the select returns more than one record you
> can do something similar to:
> DECLARE rec record;
> ...
> FOR rec IN (SELECT credit FROM users WHERE name = 'mary'
> LOOP
> IF rec.credit < 0 THEN
> ...
> ELSE
> ...
> END IF;
> END LOOP;
>
> HTH,
>
> Johan Nel
> Pretoria, South Africa.
I tryed the declare, before and after the BEGIN;, but allways returns
me the error:
-----------------------------------------------------------
ERROR: syntax error at or near "int";
LINE 1: DECLARE _mycredit int;
^
-----------------------------------------------------------
For the if statement, i've tryed that
IF 2 = 2 THEN
ROLLBACK;
END IF
but still the error near the "IF"..
dunno.. in mysql the if can be used in that way.. in postgres no?
On 30/04/2009 07:45, DaNieL..! wrote:
> I tryed the declare, before and after the BEGIN;, but allways returns
> me the error:
> -----------------------------------------------------------
> ERROR: syntax error at or near "int";
> LINE 1: DECLARE _mycredit int;
> ^
> -----------------------------------------------------------
I missed what came before in this thread, but in plpgsql functions the
DECLARE comes before BEGIN:
create or replace function my_function() returns....
as
$$
declare
....
begin
....
return....
end;
$$
language plpgsql;
Can you show us the full function code again please?
Ray.
------------------------------------------------------------------
Raymond O'Donnell, Director of Music, Galway Cathedral, Ireland
rod@iol.ie
Galway Cathedral Recitals: http://www.galwaycathedral.org/recitals
------------------------------------------------------------------
DaNieL..! wrote: > I tryed the declare, before and after the BEGIN;, but allways returns > me the error: > ----------------------------------------------------------- > ERROR: syntax error at or near "int"; > LINE 1: DECLARE _mycredit int; > ^ > ----------------------------------------------------------- > > For the if statement, i've tryed that > IF 2 = 2 THEN > ROLLBACK; > END IF > > but still the error near the "IF".. > dunno.. in mysql the if can be used in that way.. in postgres no? Sorry was thinking FUNCTION way of doing it. DECLARE can only be used in a stored procedure/function. Johan
On Thu, Apr 30, 2009 at 1:45 AM, DaNieL..! <daniele.pignedoli@gmail.com> wrote: >> >> > IF (SELECT credit FROM users WHERE name = 'mary') < 0 THEN >> > ROLLBACK; >> > END IF >> > COMMIT; >> >> > i always get the error >> > ERROR: syntax error at or near "IF" >> if you're inside a server-side function then you cannot use COMMIT nor ROLLBACK; if you aren't inside a server-side function then you cannot use IF -- Atentamente, Jaime Casanova Soporte y capacitación de PostgreSQL Asesoría y desarrollo de sistemas Guayaquil - Ecuador Cel. +59387171157