Power Builder - PB8 y Oracle

 
Vista:

PB8 y Oracle

Publicado por Oscar (3 intervenciones) el 07/03/2002 16:05:06
Tengo una app en PB8 que trabaja contra un motor Oracle 8.1.7, el problema es que mis datawindows adquieren sus datos de stored proc. Para ello defino cursores REF CURSOR en un package. Hasta ahi bien. La datawindow recupera los datos, pero no me cierra los cursores, por lo que despues de abrir varias ventanas salta el error de demasiados cursores abiertos - error de Oracle -. Solo parece cerrar los cursores cuando cierra la transaccion. Existe alguna forma de solucionar esto?. Alguno ha tenido al menos este problema. Realmente estoy desesperado y el soporte de Sybase no responde nada.
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:PB8 y Oracle

Publicado por Diego Fernandez (1 intervención) el 20/03/2002 22:29:42
Si podes pasame parte del codigo e intentare ayudarte.
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:PB8 y Oracle

Publicado por Oscar (3 intervenciones) el 21/03/2002 08:36:38
El tema es asi. Tengo una tabla cualquiera sobre una base en Oracle 8i.
create table t ( a NUMBER(2), b VARCHAR2(10))
Tengo que recuperar los datos sobre una datawindow. Pero debo hacerlo no con un select directo,
sino usando llamadas a un stored procedure "xx" que retorna los datos. Como lo hago?.
Creo un package "P", creo un tipo "t" con los datos que deseo recuperar.
type t is record (a number(2), b varchar2(10));
Creo un type cr asi:
type cr IS REF CURSOR
RETURN t;
Creo el sp xx:
PROCEDURE xx (aCursor in out p.cr)
IS
BEGIN
open aCursor FOR
SELECT a,b

Luego creo la datawindow usando como fuente de datos el sp xx.
Esto me lo dijeron en Sybase y no me dieron otra opcion para hacerlo.
EL problema es que si llamo al retrieve de la datawindow 1 vez, abre un cursor. Si lo llamo una segunda vez, abre otro, pero deja abierto el primero. Asi siguiendo hasta que llena el limite de cursores de la base de datos.
Solo libera estos cursores zombies cuando cierro la transaccion. Pero no deseo cerrarla a cada rato.
Como veras esto me genera un grave problema cuando tenes muchas ventanas en la aplicacion basadas en
datawindow que a su vez tienen en cada campo dddw y todos provienen de la mecanica que te he comentado.
Rapidamente se alcanza el limite. Existe alguna forma de evitar esto. O al menos, existe alguna otra forma
de obtener los datos de una datawindow con fuente en un stored procedure?
Gracias
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