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;
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


0