SYNTAX ERROR ON FOR... LOOP

Поиск
Список
Период
Сортировка
От Rodrigo Carvalhaes
Тема SYNTAX ERROR ON FOR... LOOP
Дата
Msg-id 426FCE69.6070805@carvalhaes.net
обсуждение исходный текст
Ответы Re: SYNTAX ERROR ON FOR... LOOP  (Michael Fuhr <mike@fuhr.org>)
Re: SYNTAX ERROR ON FOR... LOOP  (Tom Lane <tgl@sss.pgh.pa.us>)
Список 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 eacredita-se estar livre de perigo.



В списке pgsql-sql по дате отправления:

Предыдущее
От: Enrico Weigelt
Дата:
Сообщение: trigger/rule question
Следующее
От: Michael Fuhr
Дата:
Сообщение: Re: SYNTAX ERROR ON FOR... LOOP