Pues sí señor. Era eso.
Muchas gracias!!!



De:     "Sergio Martinez Roig" <[email protected]>
Para:   "forum.help400" <[email protected]>
Fecha:  16/10/2018 11:59
Asunto: ** Newsletter ** RE: Error en SQL dinámico con prepare y execute
Enviado por:    [email protected]



Fíjate en la cláusula @where:
 
@where=  ' Arcodi in' +%trim(@cadena_in)                         
        +' and arpmmi=(select min(arpmmi) from arcfil/fartic' 
        +' where arcodi in'+%trim(@cadena_in);
 
El paréntesis que hay antes del “select min” no lo estás cerrando, la 
sentencia debería terminar con +%trim(@cadena_in)+’)’; para que se cerrara 
el que se abre
 
Y antes del “into” ya cierras el paréntesis de la cláusula “VALUES”
 
De: [email protected] [
mailto:[email protected]] En nombre de alberto
Enviado el: martes, 16 de octubre de 2018 11:31
Para: forum.help400
Asunto: RE: Error en SQL dinámico con prepare y execute
 
Hola Sergio. 
Si lo hago así, luego tengo que abrir otras comillas para el INTO 
Se puede dejar así: 
@select='arcodi, dec((arpmmi/1000), 7, 2) from arcfil/fartic '; 
@where=  ' Arcodi in' +%trim(@cadena_in)                         
        +' and arpmmi=(select min(arpmmi) from arcfil/fartic' 
        +' where arcodi in'+%trim(@cadena_in);                   
@into='?, ?'; 
@sentencia=' Values(Select '+%trim(@select)+                     
           ' Where ' +%trim(@where)+ ')' +                       
           ' Into '+%trim(@into); 
Exec Sql prepare Sentencia from :@sentencia;                     
Exec SQl Execute Sentencia using :@article, :@pes_min_max;       

Pero me sigue dando ese error.  :( 


Albert Martinez de Urda
 Director TIC
Roler España SLU 
Grupo Arcadie 



De:        "Sergio Martinez Roig" <[email protected]> 
Para:        "forum.help400" <[email protected]> 
Fecha:        16/10/2018 10:52 
Asunto:        ** Newsletter ** RE: Error en SQL dinámico con prepare y 
execute 
Enviado por:        [email protected] 




Más concretamente faltaría cerrar  la subconsulta en la cláusula 
  
@where=  ' Arcodi in ' +%trim(@cadena_in)                       
       +' and arpmmi=(select min(arpmmi) from arcfil/fartic'   
       +' where arcodi in '+%trim(@cadena_in)+’)’ 
  
De: [email protected] [
mailto:[email protected]] En nombre de Sergio 
Martinez Roig
Enviado el: martes, 16 de octubre de 2018 10:33
Para: forum.help400
Asunto: RE: Error en SQL dinámico con prepare y execute 
  
Hola Alberto, 
  
Creo que te falta un cierre de paréntesis antes de la cláusula INTO para 
cerrar el que abre VALUES(. 
  
Un saludo 
Sergio Martinez 
  
De: [email protected] [
mailto:[email protected]] En nombre de alberto
Enviado el: martes, 16 de octubre de 2018 9:27
Para: forum.help400
Asunto: Error en SQL dinámico con prepare y execute 
  
Hola Foro. 
A ver si me podéis ayudar, que muchos ojos ven más que dos, y yo no 
consigo ver el qué: 
Partiendo de este script que funciona perfectamente: 

select arcodi, dec((arpmmi/1000), 7, 2) 
from arcfil.fartic           
where                                                         
arcodi in (209400,209200,213600,215200) and 
arpmmi=( select min(arpmmi) from arcfil.fartic where 
arcodi in (209400,209200,213600,215200));     

Quiero hacer un embebido dinámico en un programa. 

Lo que hago es lo siguiente: 

@select='arcodi, dec((arpmmi/1000), 7, 2) from arcfil/fartic '; 
@where=  ' Arcodi in ' +%trim(@cadena_in)                       
       +' and arpmmi=(select min(arpmmi) from arcfil/fartic'   
       +' where arcodi in '+%trim(@cadena_in); 
@sentencia=' Values(Select '+%trim(@select)+ 
          ' Where ' +%trim(@where)+ ') into ?, ?';             
Exec Sql prepare Sentencia from :@sentencia; 
Exec SQl Execute Sentencia using :@article, :@pes_min_max;     

El resultante de la variable @sentencia es: 

Values(Select arcodi, dec((arpmmi/1000), 7, 2) from arcfil/ 
fartic Where Arcodi in(209400, 209200, 213600, 215200) and arpmmi= 
(select min(arpmmi) from arcfil/fartic where arcodi in 
(209400, 209200, 213600, 215200)) into ?, ?       

El caso es que al ejecutar el prepare, me da un error SQLSTATE: 
42601 A character, token, or clause is invalid or missing.   

No consigo encontrar qué me dejo. 
Alguna pista? 
Gracias!!! 

        
Este mensaje contiene información confidencial dirigida al destinatario 
del mismo. Las opiniones expresadas pertenecen al autor y no 
necesariamente a ESTIBARNA. Si Ud. recibe este mensaje por error, se ruega 
informe inmediatamente al remitente del mismo. Queda prohibido el uso, 
divulgación, copia o distribución a terceros de la información incluida en 
este mensaje. 
Este mensaje contiene información confidencial dirigida al destinatario 
del mismo. Las opiniones expresadas pertenecen al autor y no 
necesariamente a ESTIBARNA. Si Ud. recibe este mensaje por error, se ruega 
informe inmediatamente al remitente del mismo. Queda prohibido el uso, 
divulgación, copia o distribución a terceros de la información incluida en 
este mensaje. ____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L. 
Este mensaje contiene información confidencial dirigida al destinatario 
del mismo. Las opiniones expresadas pertenecen al autor y no 
necesariamente a ESTIBARNA. Si Ud. recibe este mensaje por error, se ruega 
informe inmediatamente al remitente del mismo. Queda prohibido el uso, 
divulgación, copia o distribución a terceros de la información incluida en 
este mensaje. ____________________________________________________
Ú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.

Responder a