função não funciona
05/11/2012
0
CREATE OR REPLACE FUNCTION gera_movimento() returns integer as ' DECLARE registros RECORD; registros2 RECORD; BEGIN for registros2 in SELECT * FROM funcionarios WHERE presente = ''N'' LOOP UPDATE funcionarios SET faltas = faltas + 1 WHERE id = registros2.id; END LOOP; return 1; for registros in SELECT * FROM funcionarios WHERE presente = ''S'' LOOP INSERT INTO movimentos(funcionario) VALUES (registros.nome); UPDATE funcionarios SET presente = ''N'' WHERE id = registros.id; END LOOP; END ' language 'plpgsql'
pessoal, toda vez que eu executo este comando:
select gera_movimento();
ele não altera o campo "faltas", alguem sabe me dizer o pq?
obrigado
Alan Mario
Posts
06/11/2012
Jair N.
CREATE OR REPLACE FUNCTION gera_movimento() RETURNS void AS
$$
DECLARE
registros RECORD;
BEGIN
FOR registros IN SELECT * FROM funcionarios
LOOP
IF (registros.presente = ''N'') THEN
EXECUTE ''UPDATE funcionarios SET faltas = faltas + 1 WHERE (id = '' || registros.id || '');'';
ELSE
EXECUTE ''INSERT INTO movimentos(funcionario) VALUES ('''' || registros.nome || '''')'';
EXECUTE ''UPDATE funcionarios SET presente = ''N'' WHERE (id = '' || registros.id || '');'';
END;
END LOOP;
RETURN;
END
$$
LANGUAGE 'plpgsql' VOLATILE;
CREATE OR REPLACE FUNCTION gera_movimento() returns integer as ' DECLARE registros RECORD; registros2 RECORD; BEGIN for registros2 in SELECT * FROM funcionarios WHERE presente = ''N'' LOOP UPDATE funcionarios SET faltas = faltas + 1 WHERE id = registros2.id; END LOOP; return 1; for registros in SELECT * FROM funcionarios WHERE presente = ''S'' LOOP INSERT INTO movimentos(funcionario) VALUES (registros.nome); UPDATE funcionarios SET presente = ''N'' WHERE id = registros.id; END LOOP; END ' language 'plpgsql'
pessoal, toda vez que eu executo este comando:
select gera_movimento();
ele não altera o campo "faltas", alguem sabe me dizer o pq?
obrigado
06/11/2012
Alan Mario
obrigado!!!
06/11/2012
Jair N.
SELECT gera_movimento();
o void não retorna nada, no caso acredido que não seja necessário...
apenas veja os resultados no banco ao criar e alterar os registros das tabelas movimentos e funcionarios
obrigado!!!
06/11/2012
Alan Mario
ERRO: erro de sintaxe em ou próximo a "N"
LINE 1: SELECT ( $1 = ''N'')
^
QUERY: SELECT ( $1 = ''N'')
CONTEXT: SQL statement in PL/PgSQL function "gera_movimento" near line 7
********** Erro **********
ERRO: erro de sintaxe em ou próximo a "N"
Clique aqui para fazer login e interagir na Comunidade :)