Buenos dias.
Muchas gracias a todos. 
Supongo que el hacer un If Sqlcod<>100 and Sqlcod>=0;  despues del Fetch 
Next from @cursor  es por los ejemplos de IBM, pero me ha encantado la 
opción de hacer primero un 
Fetch First antes del bucle y eliminar el If Sqlcod<>100 and Sqlcod>=0;

La otra consulta no me acordaba de por qué la tenía apuntada, y ayer me 
acordé:
resulta que dentro de un Stored Procedure SQL sólo conseguí poder definir 
y recuperar con Row_count.
Entiendo que el SQLCA sólo pertenece a la programación no-SQL? o no es 
así?
En el segundo caso, cómo se recupera el valor desde un Stored o una 
función SQL?
Bueno, es tema sólo de curiosidad, porque ya digo que ahí lo tengo 
resuelto con el getdiagnostics: @variable=ROW_COUNT
Gracias


De:     "Raul Bascones" <[email protected]>
Para:   "forum.help400" <[email protected]>
Fecha:  16/06/2020 16:02
Asunto: ** Newsletter ** Re: Dos preguntas trascendentales SQL
Enviado por:    "Forum.help400" 
<[email protected]>



Buenas tardes, 

para gustos colores, os comento mi estilo:

- Sqlerrd(3) para saber insert's o delete's
- Programación:
dow (1 = 1);                                      
  Exec Sql Fetch Next from @cursor into :@Sortida;
  If SqlCode <> 0;                                
    leave;                                       
  endif;                                          
  hacer_cosas();
enddo;

Un saludo,
Raúl Báscones

El mar., 16 jun. 2020 a las 8:39, Alberto Martinez (<
[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 )
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