¡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.
