| 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: | Whole Thread | Raw Message | 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.
| 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 |