Fórum função não funciona #428097
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
Curtir tópico
+ 0Posts
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
Gostei + 0
06/11/2012
Alan Mario
obrigado!!!
Gostei + 0
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!!!
Gostei + 0
06/11/2012
Alan Mario
Gostei + 0
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"
Gostei + 0
06/11/2012
Lucas Araujo
Gostei + 0
06/11/2012
Alan Mario
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)