Power Builder - colocar procedimiento almacenado en POWER BUILDER

 
Vista:

colocar procedimiento almacenado en POWER BUILDER

Publicado por Ana Maria (48 intervenciones) el 28/08/2007 19:00:57
Hola, buen día.
Tengo un procedimiento almacenado en ORACLE, el cual debo integrar lo que hago en ese procedimiento a mi codigo fuente de Power Builder 8 (entiendo q no es muy practico hacer esto, pero es lo q debo hacer sorbre todo por portabilidad), no tengo idea cómo hacerlo, alguien podria darme algun link o decirme cómo lo hago?

El procedimiento que tengo en la BD es el siguiente:

CREATE OR REPLACE PROCEDURE PROC_ULT_SALDO_TARJETA(dDateFrom IN DATE, dDateTo IN DATE) AS
cDesSQL VARCHAR2(2500);
saldoTarjeta NUMBER;
BEGIN
/* INSERT DEL SET DE DATOS INICIALES */
cDesSQL := 'CREATE OR REPLACE VIEW V_VENTAS_PASADAS AS
SELECT v.SERIETARJETA,
v.FECHATRANSACCION ,
v.CANTIDADRECARGAS,
v.SALDOANTERIOR
FROM F2.VENTAS v
WHERE FECHATRANSACCION between ''' || dDateFrom ||'''
and ''' || dDateTo || '''
ORDER BY V.FECHATRANSACCION';
EXECUTE IMMEDIATE cDesSQL; /*sentencia de creacion de la vista con la inf de pasadas*/
COMMIT;
/*declaración del cursor de ventas*/
FOR cur_ventas IN ( SELECT * FROM F2.VENTAS ) LOOP
BEGIN
/*se calcula el saldo de la tarjeta en el reg de venta*/
saldoTarjeta := cur_ventas.SALDOANTERIOR + cur_ventas.CANTIDADRECARGAS;
INSERT INTO TMP_ULTIMO_SALDO (FECHA_EJECUCION,
SERIETARJETA ,
SALDO,
FECHATRANSACCION ,
TIPOTRANSACCION)
VALUES (SYSDATE,
cur_ventas.SERIETARJETA ,
saldoTarjeta,
cur_ventas.FECHATRANSACCION,
'V');
EXCEPTION
WHEN OTHERS THEN /*si ya existe el serial de la tarjeta entonces debe compararse la fecha y si la fecha es mayor a la fecha del reg de la tabla, se actualiza el registro*/
UPDATE TMP_ULTIMO_SALDO SET SALDO = saldoTarjeta ,
FECHATRANSACCION = cur_ventas.FECHATRANSACCION,
TIPOTRANSACCION = 'V'
WHERE FECHATRANSACCION < cur_ventas.FECHATRANSACCION
AND SERIETARJETA = cur_ventas.SERIETARJETA;
COMMIT;
END;
END LOOP;
/* CREACIÓN VISTA PASADAS */
cDesSQL := 'CREATE OR REPLACE VIEW V_VENTAS_PASADAS AS
SELECT p.SERIETARJETA,
p.FECHATRANSACCION ,
0 as CANTIDADRECARGAS,
p.SALDOANTERIOR
FROM F2.PASADAS p
WHERE p.FECHAPASADA between ''' || dDateFrom ||'''
and ''' || dDateTo || '''
ORDER BY p.FECHAPASADA';
EXECUTE IMMEDIATE cDesSQL;
COMMIT;
/*declaración del cursor de pasadas*/
FOR cur_pasadas IN ( SELECT * FROM F2.PASADAS ) LOOP
BEGIN
/*se calcula el saldo de la tarjeta en el reg de venta*/
saldoTarjeta := cur_pasadas. SALDOANTERIOR - 1 ;
INSERT INTO TMP_ULTIMO_SALDO (FECHA_EJECUCION,
SERIETARJETA ,
SALDO,
FECHATRANSACCION ,
TIPOTRANSACCION)
VALUES (SYSDATE,
cur_pasadas.SERIETARJETA ,
saldoTarjeta,
cur_pasadas.FECHATRANSACCION,
'P');
EXCEPTION
WHEN OTHERS THEN
UPDATE TMP_ULTIMO_SALDO SET SALDO = saldoTarjeta,
FECHATRANSACCION = cur_pasadas.FECHATRANSACCION,
TIPOTRANSACCION = 'P'
WHERE FECHATRANSACCION < cur_pasadas. FECHATRANSACCION
AND SERIETARJETA = cur_pasadas.SERIETARJETA;
COMMIT;
END;
END LOOP;
END PROC_ULT_SALDO_TARJETA;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:colocar procedimiento almacenado en POWER BUILD

Publicado por amilcar (407 intervenciones) el 29/08/2007 14:47:14
hola, mira no me puse a analizar tu codigo del todo, pero por lo q se ve, y se es q tienes q hacerlo desde tu aplicacion, deberias trabajar con cursores y sql embebidos en power para poder hacer las actualizaciones a tu base de datos.
espero puedes resolverlo, si te inclinas por esas opciones y tienes dudas, lo seguimos viendo.
saludos desde argentina
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:colocar procedimiento almacenado en POWER BUILD

Publicado por Ana Maria (48 intervenciones) el 29/08/2007 14:58:32
Hola...
Pues t cuento q yo he trabajado con sentencias SQL embebidas en Power Builder pero para SELECT,UPDATE, INSERT, pero esas son simples y no difieren mucho a lo q trabajo de SQL con ORACLE, pero no tengo idea còmo hago para trabaja la sintaxis del procedimiento q coloque en la pregunta inicial... ese es mi problema... por eso puse el codigo del procedimeinto q tengo en ORACLE.
Si me puedes indicaar algun link donde pueda docuemntarme o si tu sabes al respecto de còmo le hago pues t agradezco tu colaboraciòn.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar