¿Has probado a utilizar cursores? Sería algo así:

 

                Sentencia = 'select sum(' + %trim(fromfld) + ') from ' + 
%trim(fromlib) + '/' + %trim(fromfile);

c/exec sql

c+ declare C1 cursor for :Sentencia

c/end-exec

c/exec sql

c+ open C1

c/end-exec

c/exec sql

c+ fetch next from C1 into :Total

c/end-exec

c/exec sql

c+ close C1

c/end-exec

 

Saludos.

 

Juan Carlos.

 

 

De: Jaime Villa Torres [mailto:[email protected]] 
Enviado el: viernes, 02 de octubre de 2009 4:05
Para: forum.help400
Asunto: Re: Sql embebido

 

Gracias por el tiempo

 

El problema se origina en lo siguiente, el programa recibe CUATRO parametros

 

FROMFILE

FROMLIB

FROMFLD

TOTAL

 

El programa debe calcular la sumatoria de la columna FROMFLD del archivo 
FROMFILE y biblioteca FROMLIB

 

La siguiente instruccion sql se ha probado en la anterior version, como en 
free, con sentencia sql o generando la sentencia sql en una variable, y el 
codigo es el siguiente

 

c/exec sql                         
c+ select SUM(FROMFLD) into :TOTAL 
c+ from FROMLIB/FROMFILE                      
c/end-exec

 

Lo que requiere es que la anterior sentencia, acepte las variables antes 
mencionadas

 

Gracias.

        ----- Original Message ----- 

        From: Cristhian Nuñez <mailto:[email protected]>  

        To: forum.help400 <mailto:[email protected]>  

        Sent: Thursday, October 01, 2009 5:55 PM

        Subject: RE: Sql embebido

         

        Hola Jaime:

         

        Te pego un ejemplo de algo que tengo y funciona sin problema:

         

        Ejemplo 1:

         

        /FREE                                                             
            xxSqlSel = 'SELECT a.nEjer_peri,LEFT(a.cArticulo,'+           
            %CHAR(pnLargoCod1) + '),CASE WHEN ' + %CHAR(piMonedaNac) + '= 
            ' THEN SUM(a.dValor_tot) ELSE SUM(a.mValor_tot) END,' +       
            ' CASE WHEN ' +  %CHAR(piMonedaNac) + '=0 THEN' +             
            ' IFNULL(SUM(d.dValor_vta),0) ELSE' +                         
            ' IFNULL(SUM(d.mValor_vta),0) END' +                          
            ' FROM (((costo_articulo a INNER JOIN articulo b' +           
            ' ON a.cArticulo = b.cArticulo) INNER JOIN cat_articulo c' +  
            ' ON b.cCat_art = c.cCat_art) LEFT OUTER JOIN vta_articulo d' 
            ' ON a.nEjer_peri = d.nEjer_peri AND a.cArticulo = d.cArticul 
            ' WHERE a.nEjer_peri BETWEEN ' + %CHAR(nnEjerPeriIni) +       
            ' AND ' + %CHAR((pnEjercicio * 100) + pnPeriodo) +            
            ' AND c.cClase_art = ''' + pcClaseArt + '''' ;                
        /END-FREE                                                         

         

        Ejemplo 2:

         

         EVAL      xxCampo = 'LEFT(a.cCtaCo,' +        
                   pnDigito + ')'                      
                                                       
         EVAL      xSqlSel1 ='SELECT ' + xxCampo + ' AS
                   'cCtaCo,a.cUbica_balance,b.xDesc,' +
                   'c.xDesc,c.nSecuencia,c.cTipo_ctaco,
                   'd.xDesc,SUM(a.mSaldo)' +           
                   ' FROM balance a, plan_contable b,' 
                   'ubica_balance c, tipo_cta_contable 
                   ' WHERE ' + xxCampo + '=b.cCtaCo' + 
                   ' AND a.cUbica_balance=c.cUbica_bala
                   ' AND c.cTipo_ctaco=d.cTipo_ctaco' +
                   ' AND a.nEjercicio=' + pnEjercicio +
                   ' AND a.nPeriodo=' + pnPeriodo +    
                   ' GROUP BY ' + xxCampo + ',' +      
                   'a.cUbica_balance,b.xDesc,c.xDesc,'

                    'c.nSecuencia,c.cTipo_ctaco,d.xDesc'
                    ' ORDER BY c.nSecuencia,cCtaCo'      

         

        Seria importante que envies el codigo donde armas la sentencia

         

        Saludos.

                -----Mensaje original-----
                De: [email protected] 
[mailto:[email protected]]en nombre de Jaime Villa Torres
                Enviado el: Jueves, 01 de Octubre de 2009 04:13 p.m.
                Para: forum.help400
                Asunto: Re: Sql embebido

                Ya se realizo, en cadena o sentencia por sentencia, teniendo en 
cuenta el PREPARE, pero nada....

                        ----- Original Message ----- 

                        From: Cristhian Nuñez <mailto:[email protected]>  

                        To: forum.help400 
<mailto:[email protected]>  

                        Sent: Thursday, October 01, 2009 3:34 PM

                        Subject: RE: Sql embebido

                         

                        Hola Jaime:

                         

                        Haz probado armar la sentencia como cadena, armandola 
con las variables que mencionas y luego ejecutarla con la sentencia PREPARE. 
Puedes colocar el codigo de lo que intentas hacer.

                         

                        Saludos.

                                -----Mensaje original-----
                                De: [email protected] 
[mailto:[email protected]]en nombre de Jaime Villa Torres
                                Enviado el: Jueves, 01 de Octubre de 2009 11:55 
a.m.
                                Para: forum.help400
                                Asunto: Sql embebido

                                Tengo la siguiente necesidad y le doy por todos 
los dados pero no logro solucionarlo.

                                El problema es el siguiente.

                                 

                                Al programa debe ingresar el nombre de una 
archivo, el nombre del campo del mismo, una variable numerica.

                                El programa, con el nombre y el nombre del 
campo debe realizar un sql, y calcular el sum(nombre del campo) y ese valor 
enviarlo en la variable numérica.

                                 

                                He realizado la sentencia y tengo dos 
problemas, uno con la variable numerica que dice que no esta definida, y el 
segundo no me acepta la variable nombre del archivo en el FROM. 

                                 

                                Cualquier idea, como siempre bien venida.

                                 

                                Gracias por su tiempo

                                
                                -- 
                                Este mensaje ha sido analizado por MailScanner 
<http://www.mailscanner.info/>  
                                en busca de virus y otros contenidos 
peligrosos, 
                                y se considera que está limpio. 
                                MailScanner agradece a transtec Computers 
<http://www.transtec.co.uk/>  por su apoyo. 

                        
                        
                        __________ Información de ESET NOD32 Antivirus, versión 
de la base de firmas de virus 4474 (20091001) __________
                        
                        ESET NOD32 Antivirus ha comprobado este mensaje.
                        
                        http://www.eset.com
                        
                        -- 
                        Este mensaje ha sido analizado por MailScanner 
<http://www.mailscanner.info/>  
                        en busca de virus y otros contenidos peligrosos, 
                        y se considera que está limpio. 
                        MailScanner agradece a transtec Computers 
<http://www.transtec.co.uk/>  por su apoyo. 
                        
                        __________ Información de ESET Smart Security, versión 
de la base de firmas de virus %s __________
                        
                        ESET Smart Security ha comprobado este mensaje.
                        http://www.eset.com

________________________________

                        ____________________________________________________
                        © Publicaciones Help400, S.L. - Todos los
                        derechos reservados http://www.help400.es
                        ----------------------------------------------------
                        Para darte de baja visita la siguente URL:
                        http://listas.combios.es/mailman/listinfo/forum.help400
                        
                        
                        __________ Información de ESET Smart Security, versión 
de la base de firmas de virus %s __________
                        
                        ESET Smart Security ha comprobado este mensaje.
                        http://www.eset.com

                
                -- 
                Este mensaje ha sido analizado por MailScanner 
<http://www.mailscanner.info/>  
                en busca de virus y otros contenidos peligrosos, 
                y se considera que está limpio. 
                MailScanner agradece a transtec Computers 
<http://www.transtec.co.uk/>  por su apoyo. 

        
        -- 
        Este mensaje ha sido analizado por MailScanner 
<http://www.mailscanner.info/>  
        en busca de virus y otros contenidos peligrosos, 
        y se considera que está limpio. 
        MailScanner agradece a transtec Computers <http://www.transtec.co.uk/>  
por su apoyo. 
        
        __________ Información de ESET Smart Security, versión de la base de 
firmas de virus %s __________
        
        ESET Smart Security ha comprobado este mensaje.
        http://www.eset.com

________________________________

        ____________________________________________________
        © Publicaciones Help400, S.L. - Todos los
        derechos reservados http://www.help400.es
        ----------------------------------------------------
        Para darte de baja visita la siguente URL:
        http://listas.combios.es/mailman/listinfo/forum.help400
        
        
        __________ Información de ESET Smart Security, versión de la base de 
firmas de virus %s __________
        
        ESET Smart Security ha comprobado este mensaje.
        http://www.eset.com

Se certificó que el correo entrante no contiene virus.
Comprobada por AVG - www.avg.es
Versión: 8.5.409 / Base de datos de virus: 270.14.2/2408 - Fecha de la versión: 
10/01/09 18:23:00

____________________________________________________
© Publicaciones Help400, S.L. - Todos los
derechos reservados http://www.help400.es
----------------------------------------------------
Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400

Responder a