Hola
La variable SeleccSQL se actualiza justo antes de llamar a la subrutina Srbuscadades que es la que hace el open. No me da ningun error
y si hago un debug y miro la variable SeleccSQL tiene el valor que le he puesto
Si supongo que algo se me escapa,porque no es tan extraño hacer dos selecciones del mismo fichero, aunque yo en SQL es la primera vez, pero si con un programa RPGLE se puede hacer...


 "Cubero, Rafael \(R.\)" <[EMAIL PROTECTED]>
 Enviado por:  [EMAIL PROTECTED] 25/10/2006 12:01
Por favor, responda a
[email protected]

Para
<[email protected]>
cc
Asunto
RE: Cursor en SQL





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