Hola:

Tengo entendido que el execute no puedes utilizarlo con sentencias SELECT,
para tu caso debes usar un cursor, te paso un ejemplo, donde el campo de la
condicion Where es aleatorio.

EVAL      xSqlSel2 = 'SELECT ' +
          'SUM(a.Campo1) - SUM(a.Campo2)' +
          ' FROM tabla1 a, tabla2 b' +
          ' WHERE a.Campo=b.Campo' +
          ' AND a.Ejercicio = ?' +
          ' AND a.Periodo = ?' +
          ' AND ' + xxCampo + '= ?'

/EXEC SQL
+   PREPARE s2 FROM :xSqlSel2
/END-EXEC

/EXEC SQL
+   DECLARE c2 CURSOR FOR s2
/END-EXEC

/EXEC SQL
+   OPEN c2 USING :Ejercicio,:Periodo,:Valor
/END-EXEC

Saludos.
Cristhian
Lima-Peru
  -----Mensaje original-----
  De: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] nombre de Juan Carlos
Paredes
  Enviado el: Miércoles, 05 de Noviembre de 2008 12:51 p.m.
  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.

  --
  Este mensaje ha sido analizado por MailScanner
  en busca de virus y otros contenidos peligrosos,
  y se considera que está limpio.
  MailScanner agradece a transtec Computers por su apoyo.

-- 
Este mensaje ha sido analizado por MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que está limpio.
For all your IT requirements visit: http://www.transtec.co.uk

__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© 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