[pgbr-geral] Ajuda para criar Store Procedure???
Pessoal, Desculpa vir a lista para fazer este pedido, mas tenho uma procedure em Oracle e preciso converter ela para Postgresql. Postgresql é uma linguagem que conheço pouco, estou usando o que já conheço de banco de dados (outros), para este novo projeto (que tem um responsavel para configura ele no servidor). Se não for abusar demais, conto com a compreensão e ajuda, se estou fazendo algo errado por favor desconsiderar a mensagem. Esta é a procedure em oracle (esta procedure está dentro de uma package no oracle, por isto ela não começa com create or replace): --== -- Insere / Atualiza dados do modulo --== --== procedure SP_ATUALIZA_MODULO(n_id_modulo in MODULO.ID_MODULO%TYPE, vc2_nom_modulo in MODULO.NOM_MODULO%TYPE, vc2_desc_modulo in MODULO.DES_MODULO%TYPE, n_erro out INTEGER, vc2_msg_erro out varchar2) is n_tem_modulo INTEGER; begin n_erro := 0; -- Modulo cadastrado com sucesso -- Novo modulo if (n_id_modulo= 0) then insert into MODULO (NOM_MODULO, DES_MODULO) values (vc2_nom_modulo, vc2_desc_modulo); -- Altera dados do modulo else select count(*) into n_tem_modulo from MODULO where ID_MODULO != n_id_modulo; if (n_tem_modulo = 0) then update MODULO set NOM_MODULO = vc2_nom_modulo, DES_MODULO = vc2_desc_modulo where ID_MODULO= n_id_modulo; n_erro := 3; -- Modulo atualizado com sucesso else n_erro := 2; -- Modulo ja existe end if; end if; commit; exception when others then rollback; NULL; n_erro := sqlcode; -- Erro ao cadastrar o modulo vc2_msg_erro := sqlerrm; END SP_ATUALIZA_MODULO; Desde já grato. -- []s Nilson Chagas - Ubuntu User 25794 --- Visite: http://www.amados.com.br/podcast http://tempodesalvacao.blogspot.com/ http://bbnradio.org/ ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda para criar Store Procedure???
Em 15/01/09, Nilson Chagasnilson.chagas.si...@gmail.com escreveu: Desculpa vir a lista para fazer este pedido, mas tenho uma procedure em Oracle e preciso converter ela para Postgresql. Postgresql é uma linguagem que conheço pouco, estou usando o que já conheço de banco de dados (outros), para este novo projeto (que tem um responsavel para configura ele no servidor). Se não for abusar demais, conto com a compreensão e ajuda, se estou fazendo algo errado por favor desconsiderar a mensagem. Esta é a procedure em oracle (esta procedure está dentro de uma package no oracle, por isto ela não começa com create or replace): --== -- Insere / Atualiza dados do modulo --== --== procedure SP_ATUALIZA_MODULO(n_id_modulo in MODULO.ID_MODULO%TYPE, vc2_nom_modulo in MODULO.NOM_MODULO%TYPE, vc2_desc_modulo in MODULO.DES_MODULO%TYPE, n_erro out INTEGER, vc2_msg_erro out varchar2) is n_tem_modulo INTEGER; begin n_erro := 0; -- Modulo cadastrado com sucesso -- Novo modulo if (n_id_modulo= 0) then insert into MODULO (NOM_MODULO, DES_MODULO) values (vc2_nom_modulo, vc2_desc_modulo); -- Altera dados do modulo else select count(*) into n_tem_modulo from MODULO where ID_MODULO != n_id_modulo; if (n_tem_modulo = 0) then update MODULO set NOM_MODULO = vc2_nom_modulo, DES_MODULO = vc2_desc_modulo where ID_MODULO= n_id_modulo; n_erro := 3; -- Modulo atualizado com sucesso else n_erro := 2; -- Modulo ja existe end if; end if; commit; exception when others then rollback; NULL; n_erro := sqlcode; -- Erro ao cadastrar o modulo vc2_msg_erro := sqlerrm; END SP_ATUALIZA_MODULO; Dê uma olhada neste capítulo do manual: http://www.postgresql.org/docs/current/interactive/plpgsql-porting.html Lembre-se que uma função no PostgreSQL é uma transação e não existem transações aninhadas. Talvez SAVEPOINT possa atender sua necessidade: http://www.postgresql.org/docs/current/interactive/sql-savepoint.html Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral