¡Claro!, como ocurre con casi todos los comandos SQL. SQLCOD se inicializa
después de ejecutarse la sentencia SQL, realmente se inicializa la
estructura de datos SQLCA.

El mar., 16 jun. 2020 a las 9:59, Alberto Martinez (<
[email protected]>) escribió:

> Vale.digamos que en el segundo* fetch next *'recuperas' implícitamente el
> valor del Sqlcod, no?
>
>
>
> De:        "datil400" <[email protected]>
> Para:        "forum.help400" <[email protected]>
> Fecha:        16/06/2020 09:37
> Asunto:        ** Newsletter ** Re: Dos preguntas trascendentales SQL
> Enviado por:        "Forum.help400" <
> [email protected]>
> ------------------------------
>
>
>
> Hola Alberto,
>
> respecto a la primera pregunta no lo tengo muy claro, pero creo que son
> equivalentes.
>
> La segunda duda la tengo más clara. Con colegas y compañeros siempre hemos
> discutido sobre la mejor fórmula para construir un bucle de lectura. A casi
> todos les gusta la estructura que muestras en el correo. A mí no, le veo
> muchos inconvenientes. Yo construyo los bucles así (usando tu ejemplo):
>
> exec sql fetch next from @cursor into :@sortida;
> dow sqlcod <> 100 and sqlcod >= 0;
>    hacer_cosas();
>
>    exec sql fetch next from @cursor into :@sortida;
> enddo;
>
> Lo veo mucho más simple, mucho más limpio y, en tu caso, la comparación
> del dow no se ve afectada por una tercera sentencia SQL dentro de
> hacer_cosas().
>
> Al final se trata más de gustos personales que de otra cosa, ¿cual es el
> mejor bucle? Yo lo tengo claro.
>
> Saludos,
>
> Javier Mora
>
>
> El mar., 16 jun. 2020 a las 8:29, Alberto Martinez (<
> *[email protected]* <[email protected]>>) escribió:
> Buenos dias. Tengo un par de dudas de SQL que las estoy haciendo
> mecánicamente hace mucho y hace tiempo  que pienso en consultarlo al Foro a
> ver cómo lo véis.
> Lo primero es, para saber las líneas afectadas en un Insert delete o
> update, ¿es lo mismo usar *@variable=Sqlerrd(3) *(o @variable=Sqlerr3) que*
> getdiagnostics: @variable=ROW_COUNT*?
> Y luego otra:
> Supongo que todos hacemos bucles del tipo:
>         Dow Sqlcod<>100 and Sqlcod>=0;
>           Exec Sql Fetch Next from @cursor into :@Sortida;
>           If Sqlcod<>100 and Sqlcod>=0;
>               hacer_cosas();
>
>           ENDIF;
>        Enddo;
>
> El caso es que si *hacer_cosas()* es por ejemplo otra selección SQL que
> por lo que sea no encuentra un valor , nos cambia el valor del SQLcod y nos
> manda el bucle al traste.
> Yo lo que hago es guardarme el valor del Sqlcod antes de llamar a
> *hacer_cosas()* y luego dejarlo como estaba.
> Pero... hay otra manera pelín más elegante?
>
> Gracias!! ____________________________________________________
> Únete a Recursos AS400, nuestra Comunidad ( *http://bit.ly/db68dd*
> <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.
> ____________________________________________________
> Ú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.

Reply via email to