RE: Una de procedimientos almacenados

2017-06-30 Por tema Javier Mora
No tengo mucha experiencia con SQL dinámico, ahora mismo no se me ocurre nada 
más.

Javier

De: forum.help400-boun...@listas.combios.es 
[mailto:forum.help400-boun...@listas.combios.es] En nombre de Juan Carlos 
Paredes Castañón
Enviado el: viernes, 30 de junio de 2017 9:26
Para: forum.help400
Asunto: Re: Una de procedimientos almacenados


Buenos días, Javier.



Esa es la misma sensación que tengo yo, que la sentencia preparada anterior 
está todavía "en el limbo" y por eso no puede volver a prepararla. Lo que no sé 
es como sacarla de ese limbo.

El procedimiento está creado como NOT DETERMINISTIC, ya que entre dos 
ejecuciones los datos podrían haber variado.
---
url: http://www.paredes.info
mail: juancar...@paredes.info<mailto:juancar...@paredes.info>



El 29/06/2017 18:45, Javier Mora escribió:
¿Podría ser que el cursor no se cierre o la sentencia preparada anterior 
estuviera todavía activa/vigente/etc (no sabría cómo expresarlo)?

¿Algún parámetro al crear el procedimiento como DETERMINISTIC? Esto son "palos 
de ciego".

Javier

De: 
forum.help400-boun...@listas.combios.es<mailto:forum.help400-boun...@listas.combios.es>
 [mailto:forum.help400-boun...@listas.combios.es] En nombre de Juan Carlos 
Paredes Castañón
Enviado el: jueves, 29 de junio de 2017 17:12
Para: Forum Help 400
Asunto: Una de procedimientos almacenados


Buenas tardes, foro:

A ver si alguien me puede echar una mano, porque llevo todo el día volviéndome 
loco con este tema y no encuentro solución:

Tengo un procedimiento almacenado en SQL que obtiene datos de diferentes 
ordenadores (todos ellos AS/400). Tiene un primer cursor que, en función de un 
parámetro recibido obtiene los ordenadores a los que se tiene que conectar.

Recorriendo este cursor, mediante SQL dinámico, prepara una sentencia para 
obtener, en un segundo cursor, unos acumulados de unidades pendientes en cada 
uno de los ordenadores. Este resultado lo graba en una tabla temporal, que 
luego es la que se devuelve (una vez procesados todos los ordenadores) como 
Result Set del procedimiento.

La primera vez que ejecuto el procedimiento, todo funciona correctamente. Lo he 
probado desde STRSQL en pantalla verde, desde Ejecutar Scripts de SQL de System 
i Navigator y desde Data Studio.

La segunda vez no me devuelve ningún resultado. Si cierro la conexión (me salgo 
del STRSQL, cierro la ventana de Ejecutar Scripts o desconecto de la base de 
datos en Data Studio) y la vuelvo a abrir, me devuelve correctamente los datos 
de nuevo.

Revisando las anotaciones de trabajo, veo que la primera vez que lo ejecuto, al 
preparar dinámicamente el cursor, hace correctamente el prepare y abre el 
cursor.

La segunda, llega a componer la variable para el prepare, pero cuando va a 
abrir el cursor me da el siguiente error:

"Sentencia preparada ST2 no encontrada."

¿Alguna idea al respecto?
Gracias.

Juan Carlos.

--
url: http://www.paredes.info
mail: juancar...@paredes.info<mailto:juancar...@paredes.info>


Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Re: Una de procedimientos almacenados

2017-06-30 Por tema Juan Carlos Paredes Castañón
Buenos días, Javier. 

Esa es la misma sensación que tengo yo, que la sentencia preparada
anterior está todavía "en el limbo" y por eso no puede volver a
prepararla. Lo que no sé es como sacarla de ese limbo.  

El procedimiento está creado como NOT DETERMINISTIC, ya que entre dos
ejecuciones los datos podrían haber variado.

---
url: http://www.paredes.info
mail: juancar...@paredes.info 

El 29/06/2017 18:45, Javier Mora escribió:

> ¿Podría ser que el cursor no se cierre o la sentencia preparada anterior 
> estuviera todavía activa/vigente/etc (no sabría cómo expresarlo)? 
> 
> ¿Algún parámetro al crear el procedimiento como DETERMINISTIC? Esto son 
> "palos de ciego". 
> 
> Javier 
> 
> DE: forum.help400-boun...@listas.combios.es 
> [mailto:forum.help400-boun...@listas.combios.es] EN NOMBRE DE Juan Carlos 
> Paredes Castañón
> ENVIADO EL: jueves, 29 de junio de 2017 17:12
> PARA: Forum Help 400
> ASUNTO: Una de procedimientos almacenados 
> 
> Buenas tardes, foro: 
> 
> A ver si alguien me puede echar una mano, porque llevo todo el día 
> volviéndome loco con este tema y no encuentro solución: 
> 
> Tengo un procedimiento almacenado en SQL que obtiene datos de diferentes 
> ordenadores (todos ellos AS/400). Tiene un primer cursor que, en función de 
> un parámetro recibido obtiene los ordenadores a los que se tiene que 
> conectar. 
> 
> Recorriendo este cursor, mediante SQL dinámico, prepara una sentencia para 
> obtener, en un segundo cursor, unos acumulados de unidades pendientes en cada 
> uno de los ordenadores. Este resultado lo graba en una tabla temporal, que 
> luego es la que se devuelve (una vez procesados todos los ordenadores) como 
> Result Set del procedimiento. 
> 
> La primera vez que ejecuto el procedimiento, todo funciona correctamente. Lo 
> he probado desde STRSQL en pantalla verde, desde Ejecutar Scripts de SQL de 
> System i Navigator y desde Data Studio. 
> 
> La segunda vez no me devuelve ningún resultado. Si cierro la conexión (me 
> salgo del STRSQL, cierro la ventana de Ejecutar Scripts o desconecto de la 
> base de datos en Data Studio) y la vuelvo a abrir, me devuelve correctamente 
> los datos de nuevo. 
> 
> Revisando las anotaciones de trabajo, veo que la primera vez que lo ejecuto, 
> al preparar dinámicamente el cursor, hace correctamente el prepare y abre el 
> cursor.  
> 
> La segunda, llega a componer la variable para el prepare, pero cuando va a 
> abrir el cursor me da el siguiente error: 
> 
> "Sentencia preparada ST2 no encontrada." 
> 
> ¿Alguna idea al respecto?
> 
> Gracias. 
> 
> Juan Carlos. 
> 
> -- 
> 
> url: http://www.paredes.info
> mail: juancar...@paredes.info 
> 
> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
> Forum.Help400 (c) Publicaciones Help400, S.L.
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

RE: Una de procedimientos almacenados

2017-06-29 Por tema Javier Mora
¿Podría ser que el cursor no se cierre o la sentencia preparada anterior 
estuviera todavía activa/vigente/etc (no sabría cómo expresarlo)?

¿Algún parámetro al crear el procedimiento como DETERMINISTIC? Esto son “palos 
de ciego”.

Javier

De: forum.help400-boun...@listas.combios.es 
[mailto:forum.help400-boun...@listas.combios.es] En nombre de Juan Carlos 
Paredes Castañón
Enviado el: jueves, 29 de junio de 2017 17:12
Para: Forum Help 400
Asunto: Una de procedimientos almacenados


Buenas tardes, foro:

A ver si alguien me puede echar una mano, porque llevo todo el día volviéndome 
loco con este tema y no encuentro solución:

Tengo un procedimiento almacenado en SQL que obtiene datos de diferentes 
ordenadores (todos ellos AS/400). Tiene un primer cursor que, en función de un 
parámetro recibido obtiene los ordenadores a los que se tiene que conectar.

Recorriendo este cursor, mediante SQL dinámico, prepara una sentencia para 
obtener, en un segundo cursor, unos acumulados de unidades pendientes en cada 
uno de los ordenadores. Este resultado lo graba en una tabla temporal, que 
luego es la que se devuelve (una vez procesados todos los ordenadores) como 
Result Set del procedimiento.

La primera vez que ejecuto el procedimiento, todo funciona correctamente. Lo he 
probado desde STRSQL en pantalla verde, desde Ejecutar Scripts de SQL de System 
i Navigator y desde Data Studio.

La segunda vez no me devuelve ningún resultado. Si cierro la conexión (me salgo 
del STRSQL, cierro la ventana de Ejecutar Scripts o desconecto de la base de 
datos en Data Studio) y la vuelvo a abrir, me devuelve correctamente los datos 
de nuevo.

Revisando las anotaciones de trabajo, veo que la primera vez que lo ejecuto, al 
preparar dinámicamente el cursor, hace correctamente el prepare y abre el 
cursor.

La segunda, llega a componer la variable para el prepare, pero cuando va a 
abrir el cursor me da el siguiente error:

"Sentencia preparada ST2 no encontrada."

¿Alguna idea al respecto?
Gracias.

Juan Carlos.

--
url: http://www.paredes.info
mail: juancar...@paredes.info

Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Re: Una de procedimientos almacenados

2017-06-29 Por tema Jesus Manuel Sanchez Montaña
Hola:


No se si es el caso, pero cuidado con esto:


Names the prepared statement. If the name identifies an existing prepared
statement, that previously prepared statement is destroyed. The name
must not identify a prepared statement that is the SELECT statement of
an open cursor.


 Saludo2.

Nam

De: Juan Carlos Paredes Castañón 
Enviado: jueves, 29 de junio de 2017 17:11
Para: Forum Help 400
Asunto: Una de procedimientos almacenados


Buenas tardes, foro:

A ver si alguien me puede echar una mano, porque llevo todo el día volviéndome 
loco con este tema y no encuentro solución:

Tengo un procedimiento almacenado en SQL que obtiene datos de diferentes 
ordenadores (todos ellos AS/400). Tiene un primer cursor que, en función de un 
parámetro recibido obtiene los ordenadores a los que se tiene que conectar.

Recorriendo este cursor, mediante SQL dinámico, prepara una sentencia para 
obtener, en un segundo cursor, unos acumulados de unidades pendientes en cada 
uno de los ordenadores. Este resultado lo graba en una tabla temporal, que 
luego es la que se devuelve (una vez procesados todos los ordenadores) como 
Result Set del procedimiento.

La primera vez que ejecuto el procedimiento, todo funciona correctamente. Lo he 
probado desde STRSQL en pantalla verde, desde Ejecutar Scripts de SQL de System 
i Navigator y desde Data Studio.

La segunda vez no me devuelve ningún resultado. Si cierro la conexión (me salgo 
del STRSQL, cierro la ventana de Ejecutar Scripts o desconecto de la base de 
datos en Data Studio) y la vuelvo a abrir, me devuelve correctamente los datos 
de nuevo.

Revisando las anotaciones de trabajo, veo que la primera vez que lo ejecuto, al 
preparar dinámicamente el cursor, hace correctamente el prepare y abre el 
cursor.

La segunda, llega a componer la variable para el prepare, pero cuando va a 
abrir el cursor me da el siguiente error:

"Sentencia preparada ST2 no encontrada."

¿Alguna idea al respecto?

Gracias.

Juan Carlos.

--
url: http://www.paredes.info
mail: juancar...@paredes.info

Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.