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