La instrucción SQL la puedes construir dentro del RPG sin problemas. 

 

Ejemplo:

Eval      sql_sel_1 =%trim('SELECT * FROM "PLAZON" 

          'Where(Plafec<>''' + %char(f0)      +''' 

          'and Plafer>=  ''' + %char(DEwFeC) +'''  

          'and Plafer<=  ''' + %char(HAwFeC) +'''  

          'and Plaagt>=' + %char(DEwagt) +' ' +    

          'and Plaagt<=' + %char(HAwagt) +' ' +    

          'and PlaTal>=  ''' + DEwTaL      +''' '  

          'and PlaTal<=  ''' + HAwTaL      +''' '  

          )                     

                                     

 Eval      sqlOrder=(' ORDER BY ' +  

           'PLAAGT,'+                

           'PLAFER,' +               

           'PLATAL,' +               

           'PLAAAL,' +               

           'PLANAL'  +               

           ' For Read Only' )        

                                     

 eval      SQLSTM=%trim(sqlselect) + 

                  %trim(sqlOrder )   

 

C/Exec Sql                   

C+ PREPARE SLT FROM :SQLSTM  

C/End-Exec                   

 

C*Exec Sql                            

C* EXECUTE SLT                        

C*/End-Exec                           

 * -----------------------------------

C/Exec Sql                            

C+ DECLARE LECTOR1 CURSOR FOR slt     

C/End-Exec    

 

 

Etc,etc                                  

 

Un saludo.

J.Bermudez

  _____  

De: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] En nombre de Juan Carlos
Paredes
Enviado el: miércoles, 05 de noviembre de 2008 18:51
Para: Forum Help 400
Asunto: Select con variables en sql dinámico

 

Me surge la necesidad de ejecutar una consulta del tipo:

 

select value(nucampo, 0) into :NuevoCampo from biblioteca/tabla where
campo=:Campo

 

y tengo que ejecutarla en sql dinámico, porque la biblioteca en que está la
tabla es variable en función de una serie de valores que se obtienen por
programa.

 

Según el manual SQL Reference no puedo utilizar variables en una sentencia
que voy a ejecutar dinámicamente, pero sí parámetros. Así, según lo que dice
el manual, la sentencia debería transformarse en 

 

select value(nucampo, 0) into ? from biblioteca/tabla where campo=?

 

 

y luego ejecutarla con:

 

execute sentencia using :NuevoCampo, :Campo

 

Sin embargo, me da error en el prepare de la sentencia porque, según indica
el carácter ? no es válido.

 

Alguien ha hecho algo similar y me puede indicar dónde está el error.

 

Gracias y saludos.

 

Juan Carlos.

 

De acuerdo con la Ley orgánica 15/1999, de 13 de diciembre, de Protección de
Datos de Carácter Personal, le informamos que los datos que nos facilite
podrían ser incluidos en los ficheros de *GRUPO EVEREST con fines
comerciales, contractuales y publicitarios y, a tal efecto, serán cedidos a
otras empresas del Grupo Everest dedicadas a actividades de impresión,
encuadernación, edición, publicación, distribución y venta de libros y otra
clase de publicaciones. Sus datos se presumen veraces mientras no nos
comunique lo contrario. Podrá ejercitar sus derechos de acceso,
rectificación, candelación y oposición en la siguiente dirección, carretera
León - A Coruña, km.5, s/n, código postal 24010 (León). 

*GRUPO EVEREST está integrado por EDITORIAL EVEREST,S.A, EVEREST DE
EDICIONES Y DISTRIBUCIÓN,S.L., LA BOUTIQUE DEL LIBRO Y DEL OCIO,S.L., GRUPO
EVERHOUSE,S.L., EDITORIAL EVEREST ANDALUCÍA,S.L., EDICIONES GAVIOTA,S.L.,
EDICIONES CADÍ,S.L., EDITORIAL EVERGRÁFICAS,S.L., GRUPO EVEREST DE
COMUNICACIÓN,S.L., EDITORIAL EVEREST GALICIA,S.L., AIZKORRI ARGITALETXEA,
S.L. 

__________________________________________________
Forum.HELP400 es un servicio m&amp;#225;s de NEWS/400.
&amp;#169; 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