Algo se te esta escapando .
Este tipo de procesos es muy habitual en mis aplicaciones, y no da ningun problema.
En cualquier caso, prueba a activar el debug, solo strdbg sin ningun otro parametro o programa. Ejecuta tu programa, y revisa las anotaciones del trabajo.
Otra cosa, supongo que el cursor tendra un where con variables, ¿las actualizaras antes del sig. open?.... 
 

Saludos. Rafael

 


From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED]
Sent: 24 October 2006 17:43
To: [email protected]
Subject: Cursor en SQL


Hola Foro
Nunca antes habia intentado hacer una seleccion SQL en un programa dos veces sobre un mismo fichero. evidentemente con parámetros diferentes para que me de diferente resultado. Ahora lo pruebo con una subrutina como la que incluyo abajo,  
y el caso es que parece que no me cierra el cursor y hace las dos veces la misma seleccion aunque le cambie el SeleccSQL. Como podeis ver es todo la misma subrutina i tendria que hacerlo todo de un tirón,pero me contesta con los mismos datos de antes. En la compilación del programa está
la opcionCLOSQLCSR    peo sólo es para fin de programa. Sabeis qé puede pasar?
Gracias        
 C     Srbuscadades  Begsr                                          
 C/EXEC SQL Prepare sentencia from :SeleccSQL                      
 C/END-EXEC                                                        
 C/EXEC SQL declare @cursor Cursor for Sentencia                    
 C/END-EXEC                                                        
  *                                                                
 C/Exec sql                                                        
 C+ open  @CURSOR                                                  
 C/end-exec                                                        
  *                                                                
 C                   Dow       sqlcod <>100 and sqlcod>=0          
 C/Exec sql                                                        
 C+ FETCH NEXT FROM @CURSOR INTO :article, :unitat, :servit        
 C/end-exec                                                        
 C                   If        sqlcod<>100 and sqlcod>=0            
 C                   Exsr      Srcalkil                            
 C                   Add       kilos         @servitkg              
 C                   Endif                                                  
 C                   Enddo                                                  
   *                                                                          
 C/Exec sql                                                                  
 C+ CLOSE @CURSOR                                                            
 C/end-exec                                                                  
 C                   Endsr                                                  

Responder a