Em 15/01/09, Nilson Chagas<[email protected]> 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 [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
