SYNTAX ERROR ON FOR... LOOP

From: Rodrigo Carvalhaes <grupos(at)carvalhaes(dot)net>
To: pgsql-sql(at)postgresql(dot)org
Subject: SYNTAX ERROR ON FOR... LOOP
Date: 2005-04-27 17:39:53
Message-ID: 426FCE69.6070805@carvalhaes.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Hi Guys,

I am having a "simple syntax problem" but very strange...

I am trying to make an IF / ELSE / END IF inside of a FOR ... LOOP but I
am getting syntax error on this contol structure...
If I comment the IF / ELSE / ENDIF the fuction works ...

I am using PostgreSQL win 8.0
Any tip ? :-D

The function is:

CREATE OR REPLACE FUNCTION reorder()
RETURNS int4 AS
$BODY$

DECLARE
new_code INTEGER;
recs RECORD;
validation varchar;
vstrname varchar;
vstrcgc_cic varchar;
vstrquery varchar;
vstrupdate varchar;

BEGIN

new_code := 1;

FOR recs IN (SELECT * FROM table1 ORDER BY is_customer, name)
LOOP

-- Validation
vstrname := replace(recs.name,$$'$$,$$\'$$);

vstrupdate := $$UPDATE table1 SET code = $$ || new_code ||
$$ WHERE old_code = $$ || recs.old_code || $$ AND is_customer $$;

IF records.is_customer IS FALSE THEN
vstrupdate := vstrupdate || $$ IS true $$;
ELSE
vstrupdate := vstrupdate || $$ IS false $$;
ENDIF;

EXECUTE vstrupdate;

new_code := new_code + 1 ;

END LOOP;

RETURN 1;
END;

$BODY$
LANGUAGE 'plpgsql' VOLATILE;

My table1 is:

CREATE TABLE table1
(
code int4,
name varchar(50),
old_code int4,
is_customer bool DEFAULT false
)
WITHOUT OIDS;

INSERT INTO table1 (code, name, old_code, is_customer) VALUES (9,
'John', 23, true);
INSERT INTO table1 (code, name, old_code, is_customer) VALUES (19,
'Rodrigo', 334, true);
INSERT INTO table1 (code, name, old_code, is_customer) VALUES (82,
'Fulano', 3484, true);
INSERT INTO table1 (code, name, old_code, is_customer) VALUES (1,
'Beltrano', 3454, false);
INSERT INTO table1 (code, name, old_code, is_customer) VALUES (4,
'Madicon', 23, false);

Cheers,

Rodrigo Carvalhaes

--
Esta mensagem foi verificada pelo sistema de antivírus e
acredita-se estar livre de perigo.

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Michael Fuhr 2005-04-27 18:00:04 Re: SYNTAX ERROR ON FOR... LOOP
Previous Message Enrico Weigelt 2005-04-27 16:56:25 trigger/rule question