Problema function

08/11/2012

0

mais uma vez, probleminha na function

codigo da function


CREATE OR REPLACE FUNCTION verifica_estado() returns integer AS
'
DECLARE
    registros RECORD;
BEGIN
    FOR registros in SELECT * FROM clientes LOOP
             IF registros.estado = ''RS'' THEN
                   INSERT INTO estados(nome) VALUES(''RIO Grande do Sul'');
             ELSEIF registros.estado = ''SP'' THEN
                   INSERT INTO estados(nome) VALUES(''São Paulo'');
             ELSEIF registros.estado = ''RJ'' THEN
                   INSERT INTO estados(nome) VALUES(''Rio de Janeiro'');
             ELSEIF registros.estado = ''SC'' THEN
                   INSERT INTO estados(nome) VALUES(''Santa Catarina'');
             ELSE
                   INSERT INTO estados(nome) VALUES(''Não cadastrado'');
             END IF;
             return 0;
    END LOOP;
END
'
language 'plpgsql'




depois que executo:


select verifica_estado();




e


select * from estados;




ele preenche os campos somente com 1 dos estados da tabela, o que pode ser???
Alan Mario

Alan Mario

Responder

Posts

09/11/2012

Alan Mario

pessoal, olhem esse problema!!!

obrigado
Responder

09/11/2012

Bruno Leandro

Ola Alan deixa eu entender a sua necessidade, voce quer criar uma função para listar todos os clientes e verificar se os estados definidos nos clientes, se não existirem ainda na tabela de estados incluir na sua tabela de estados com a estrutura codigo_estado e nome ?
Responder

09/11/2012

Alan Mario

essa função é para adicionar os estados, porem só esta adicionando o "Rio de janeiro" em sequencia...
Responder

09/11/2012

Bruno Leandro

certo esse problema deve estar ocorrendo pelo comando return estar dentro do loop, ao executa-lo a função deve estar parando, teste utilizando o return 0; a baixo do end loop assim

CREATE OR REPLACE FUNCTION verifica_estado() returns integer AS
'
DECLARE
registros RECORD;
BEGIN
FOR registros in SELECT * FROM clientes LOOP
IF registros.estado = ''RS'' THEN
INSERT INTO estados(nome) VALUES(''RIO Grande do Sul'');
ELSEIF registros.estado = ''SP'' THEN
INSERT INTO estados(nome) VALUES(''São Paulo'');
ELSEIF registros.estado = ''RJ'' THEN
INSERT INTO estados(nome) VALUES(''Rio de Janeiro'');
ELSEIF registros.estado = ''SC'' THEN
INSERT INTO estados(nome) VALUES(''Santa Catarina'');
ELSE
INSERT INTO estados(nome) VALUES(''Não cadastrado'');
END IF;
END LOOP;
return 0;
END
'
language 'plpgsql'
Responder

09/11/2012

Alan Mario

Bruno, assim que possivel vou testar esse codigo...

depois deixo uma resposta aqui, informando se deu certo ou não...


obrigado
Responder

09/11/2012

Bruno Leandro

ok, ficamos no aguardando
Responder

09/11/2012

Alan Mario

show de bola Bruno...tudo ok!!!

muito obrigado!!!
Responder

12/11/2012

Alan Mario

post concluido!!!
Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar