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.

