[Pgsql-ayuda] store procedures

From: Sandrigo Lezcano <alkafes(at)yahoo(dot)com>
To: Pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
Subject: [Pgsql-ayuda] store procedures
Date: 2003-07-07 15:42:40
Message-ID: 20030707154240.48955.qmail@web20004.mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

algo q no me queda claro (ufff varios..)

basandome en el capitulo 19.11.x 'Porting from Oracle
PL/SQL'

entiendo que: (asumo que... favor confimar)

1.mis procedures los convierto a function.
2.si tengo dos o mas valores tipo OUT/INOUT los
convierto en tantas funciones sea necesaria
para devolverme dichos resultados.
3. el tipo de valor devuelto por estas pr_functions
seria VOID ...???? (la mayorìa realizan select, update
y delete pero no devuelven nada.)
4. aunque sean functions, lo mismo los ejecuto
desde el cliente (PowerBuilder) con:

EXECUTE funcion_nombre (lista_de_parametros_IN ...)

en el manual 19.11.3 retorna integer... tb se los
ejecuta com EXECUTE..??? (en el cliente)

5. No he visto que pueda usar labels para una loop
en Pg. (ejemplo abajo)

6. Alvaro mencionó que Pg no tiene SQLSTATE
que creo que podría manejarlo como el ej. 19.11.3
--- pero todavía me cuesta muchísimo pensarlo o
modelarlo para PostgreSQL. -------

Para lo cual anexo una copia de unos de los
procedimientos en Sybase y (todos utilizan
el mismo model) Cualquier comentario
sugerencia sería de GRANDIOSÍSIMA AYUDA...

ALTER PROCEDURE pr_insertar_novedades(@novedad
T_NOVEDAD,@proceso integer)
BEGIN
declare @legajo T_LEGAJO;
declare @planilla T_PLANILLA;
declare @cantidad T_CANTIDAD;
declare @base T_GUARANIES;
declare @factor double;
declare err_notfound exception for sqlstate
value '02000';
declare c_cursor dynamic scroll cursor for
select legajo,planilla,cantidad,
base,factor
from novedades_modelos
where novedad = @novedad;
open c_cursor;
CustomerLoop:
loop fetch next c_cursor
into
@legajo,@planilla,@cantidad,@base,@factor;
if sqlstate = err_notfound then
leave CustomerLoop
end if;
if not exists(select 1 from novedades_proceso
where legajo = @legajo
and novedad = @novedad
and planilla = @planilla
and numero_proceso = @proceso) then
insert into novedades_proceso (
legajo,novedad,planilla,cantidad,base,
factor,numero_proceso)

values(@legajo,@novedad,@planilla,@cantidad,@base,@factor,@proceso)
end if
end loop CustomerLoop;
close c_cursor;
END;

_________________________________________________________
Do You Yahoo!?
Información de Estados Unidos y América Latina, en Yahoo! Noticias.
Visítanos en http://noticias.espanol.yahoo.com

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message lerkista 2003-07-07 15:46:03 [Pgsql-ayuda] Interfaz para Postgresql
Previous Message Alvaro Herrera 2003-07-07 14:16:54 Re: [Pgsql-ayuda] Error en Conexión