La Web del Programador: Comunidad de Programadores
 
    Pregunta:  4385 - PROBLEMAS CON UN CURSOR DINÁMICO (POWERBUILER Y ORACLE 8.0)
Autor:  Helmut
Trabajo en Powerbuilder 6.0 contra Oracle 8.0.
Intento hacer un cursor dinámico en PowerBuilder declarándolo de la siguiente manera:

prepare SQLSA from :miselect;
declare curestapoy dynamic cursor for SQLSA;
open dynamic curestapoy;
fetch ...

Cuando compilo no da errores, pero cuando ejecuto la aplicación, me da el siguiente error de PowerBuilder: R1022 (indicándome que la sentencia SQL que intento ejecutar (el fetch concretamente) no ha sido preparada debidamente). Este mismo trozo de programa funciona en SQL Server, lo que no entiendo es porqué no funciona en Oracle 8

Si podéis contestarme a la pregunta, hacedlo a la dirección de email.

Un saludo de antemano

  Respuesta:  Alberto Quintana Heras
Me respondo yo mismo la pregunta, porque encontré la solución, y era de lo más trivial.
Cuando se hace un cursor dinámico y se ha creado un objeto transacción distinto del SQLCA, lo que hay que hacer en la sentencia que declara el cursor es utilizar ese objeto transacción propio.

Es decir, mi sentencia sería, bien escrita:

prepare SQLSA from :miselect USING <mi objeto transacción>;
declare curestapoy dynamic cursor for SQLSA;
open dynamic curestapoy;
fetch ...

En la sentencia prepare no utilicé mi objeto transacción. Para que funcione debería haberlo puesto.
Muchas gracias por todo