Power Builder - store procedure

   
Vista:

store procedure

Publicado por luis (7 intervenciones) el 21/07/2009 07:27:49
hola estoy trabajando con oracle 7 y power 7 (si la migracion seria una opcion ) mi problema es que han creaado un procedimiento que no se puede cambiar que debulve un tipo table defininido en un paque y se tiene que recuperar en power

el tipo esta definido asi

TYPE EFECTIVIDAD is record (
campo1 tabla.VARIANT%TYPE,
campo2 tabla.FROM_SEC%TYPE,
campo3 tabla.TO_SEC%TYPE
);

TYPE param_efec IS TABLE OF EFECTIVIDAD;

y el procedimiento

CREATE OR REPLACE PROCEDURE SID.p_datawindow (p_salida out param_efec )

el procedimiento ejecutado en oracle funciona todo bien pero no sabria como obtener los datos en power trate de ejcutar el procedimiento pero no concuerda el tipo de adto en power como podria hacerlo

gracias por la ayuda
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:stored procedure

Publicado por miguel (153 intervenciones) el 21/07/2009 20:17:31
Nosotros usamos un objeto de transacción (guardado como por ejemplo "n_tr" y lo asignamos en el objeto de la aplicación en "variable types" bajo SQLCA en vez de sqlca que es el por defecto. (cuando luego refieres a sqlca en el código realmente haces referencia a tu propio objeto de transacción n_tr).

el objeto de transacción tiene por ejemplo declarado la función/stored procedure como local external function:
FUNCTION long SARCAT_LOGOUT(string TOKEN, REF string PAR_ERROR) RPCFUNC ALIAS FOR "SARCAT_LIB8.LOGOUT"

Sarcat_lib8 en nuestro caso, es un paquete definido en oracle que contiene la función logout(). Luego llamamos a sarcat_logout() - (gracias al alias, aunque creo que no es necesario usar un alias, ni tampoco que la función o procedim. almacenado esté en un paquete) - lo llamamos desde código como si fuera un función normal:
ll_codret = SQLCA.sarcat_logout(gs_token_sarcat, ls_desc_error)

(sqlca, en realidad hará referencia a n_tr ya que así lo pusimos en el objeto de la aplicación).

Para recoger el tipo especial de datos que tienes en oracle, supongo que tendrás que usar un objeto de tipo estructura en powerbuilder que contenga los mismos campos del mismo tipo que los que forman tu tipo de datos de oracle y usar eso en la declaración de la "local external function" del objeto de transacción y pasar una variable del tipo de la estructura a la llamada a la función desde tu código.

Espero que haya aclarado algo (tengo poco tiempo).
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:stored procedure

Publicado por miguel (153 intervenciones) el 06/08/2009 23:36:00
qué gracioso, ahora me toca hacerlo también en el trabajo.
pasar una estructura a una función de oracle. de momento sin éxito. Con api´s de windows no hay problema al pasar estructuras de datos pero no lo he conseguido con funciones de oracle de momento. Si lo logro os informaré.
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