SYNTAX ERROR ON FOR... LOOP
От | Rodrigo Carvalhaes |
---|---|
Тема | SYNTAX ERROR ON FOR... LOOP |
Дата | |
Msg-id | 426FCE69.6070805@carvalhaes.net обсуждение исходный текст |
Ответы |
Re: SYNTAX ERROR ON FOR... LOOP
Re: SYNTAX ERROR ON FOR... LOOP |
Список | 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 по дате отправления: