Fórum Function com cursor no loop #400279
04/05/2011
0
Bom dia!!!!
Não conheço muito bem o PL/pgsql e preciso fazer uma function para pegar todos os id's de uma tabela e inserir em outra.
Fiz o código, mas parece que o loop não está parceando meu cursor!
Eis o código:
CREATE OR REPLACE FUNCTION insere_sistemaperfilopcao() RETURNS trigger AS
$BODY$
DECLARE C_Perfil CURSOR FOR
SELECT sistemaperfil.id_sistemaperfil
FROM sistemaperfil;
R_Perfil integer;
v_id_negativo sistemapermissaoopcao.id_sistemapermissaoopcao%TYPE;
BEGIN
IF(NEW.opcao = 0) THEN
v_id_negativo = NEW.id_sistemapermissaoopcao;
END IF;
OPEN C_Perfil;
LOOP
FETCH C_Perfil INTO R_Perfil;
INSERT INTO sistemaperfilopcao (fk_id_sistemapermissaoopcao,fk_id_sistemaperfil)
VALUES (v_id_negativo, R_Perfil);
return NEW;
END LOOP;
CLOSE C_Perfil;
return NEW;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
Alguém pode me ajudar?!!!!! Por favor?! =]
obrigada!
Não conheço muito bem o PL/pgsql e preciso fazer uma function para pegar todos os id's de uma tabela e inserir em outra.
Fiz o código, mas parece que o loop não está parceando meu cursor!
Eis o código:
CREATE OR REPLACE FUNCTION insere_sistemaperfilopcao() RETURNS trigger AS
$BODY$
DECLARE C_Perfil CURSOR FOR
SELECT sistemaperfil.id_sistemaperfil
FROM sistemaperfil;
R_Perfil integer;
v_id_negativo sistemapermissaoopcao.id_sistemapermissaoopcao%TYPE;
BEGIN
IF(NEW.opcao = 0) THEN
v_id_negativo = NEW.id_sistemapermissaoopcao;
END IF;
OPEN C_Perfil;
LOOP
FETCH C_Perfil INTO R_Perfil;
INSERT INTO sistemaperfilopcao (fk_id_sistemapermissaoopcao,fk_id_sistemaperfil)
VALUES (v_id_negativo, R_Perfil);
return NEW;
END LOOP;
CLOSE C_Perfil;
return NEW;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
Alguém pode me ajudar?!!!!! Por favor?! =]
obrigada!
Kellysampaio
Curtir tópico
+ 0
Responder
Posts
04/05/2011
Jair N.
Boa Tarde Kelly, só pra entender melhor tem como voce passar o scritp destas duas tabelas os campos da tabela "sistemaperfilopcao" são estes mesmos "fk_id_sistemapermissaoopcao e fk_id_sistemaperfil" com as iniciais de "FK-Foreign Key" no seu insert é isso mesmo?
Responder
Gostei + 0
04/05/2011
Kellysampaio
Então, Consegui resolver!
O Problema era no cursor...
DECLARE
v_id_negativo sistemapermissaoopcao.id_sistemapermissaoopcao%TYPE;
P_Perfil CURSOR FOR SELECT sistemaperfil.id_sistemaperfil FROM sistemaperfil;
BEGIN
IF(NEW.opcao = 0) THEN
v_id_negativo = NEW.id_sistemapermissaoopcao;
for r_perfil in p_perfil loop
INSERT INTO sistemaperfilopcao (fk_id_sistemapermissaoopcao,fk_id_sistemaperfil)
VALUES (v_id_negativo, r_Perfil.id_sistemaperfil);
end loop;
END IF;
return NEW;
END;
Obrigada
O Problema era no cursor...
DECLARE
v_id_negativo sistemapermissaoopcao.id_sistemapermissaoopcao%TYPE;
P_Perfil CURSOR FOR SELECT sistemaperfil.id_sistemaperfil FROM sistemaperfil;
BEGIN
IF(NEW.opcao = 0) THEN
v_id_negativo = NEW.id_sistemapermissaoopcao;
for r_perfil in p_perfil loop
INSERT INTO sistemaperfilopcao (fk_id_sistemapermissaoopcao,fk_id_sistemaperfil)
VALUES (v_id_negativo, r_Perfil.id_sistemaperfil);
end loop;
END IF;
return NEW;
END;
Obrigada
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)