Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] Problema con query dentro de procedure sp_msforeachdb

Estas en el tema de Problema con query dentro de procedure sp_msforeachdb en el foro de SQL Server en Foros del Web. Buenos días, mi intención es coger el nombre base de datos y que salga en la consulta como un literal, tal que el resultado de ...
  #1 (permalink)  
Antiguo 18/04/2016, 04:57
 
Fecha de Ingreso: abril-2016
Mensajes: 2
Antigüedad: 8 años, 7 meses
Puntos: 0
Problema con query dentro de procedure sp_msforeachdb

Buenos días, mi intención es coger el nombre base de datos y que salga en la consulta como un literal, tal que el resultado de la tabla sea:

nombretabla, campo1, campo2,campo3, etc...

Este es mi código:

Código SQL:
Ver original
  1. EXEC sp_msforeachdb 'use [?];
  2.            if Exists(SELECT *
  3.                 FROM INFORMATION_SCHEMA.TABLES
  4.                 WHERE TABLE_NAME = ''N_CON'')
  5.            BEGIN
  6.            declare @nombrebd varchar(128)
  7.            set @nombrebd=?
  8.             SELECT DISTINCT PAD_EJE, PAD_NRE, PAD_SIT,PED_COD, TRE_COD, TRE_DES,PAD_NVR, PAD_IMP,ISNULL(PED_DES,"") AS PED_DES
  9.        FROM ((((N_PAD LEFT OUTER JOIN N_TRE ON PAD_ETR = TRE_ETR AND PAD_PRO = TRE_PRO AND PAD_MUN = TRE_MUN AND PAD_TRE = TRE_COD)
  10.        LEFT OUTER JOIN N_PED ON PAD_PER = PED_COD) LEFT OUTER JOIN N_VAL ON PAD_ETR = VAL_ETR AND  PAD_PRO = VAL_PRO AND  PAD_MUN = VAL_MUN AND  PAD_COD = VAL_PAD)
  11.        LEFT OUTER JOIN N_CAR ON VAL_ETR = CAR_ETR AND  VAL_PRO = CAR_PRO AND  VAL_MUN = CAR_MUN AND  VAL_CAR = CAR_COD)
  12.        WHERE PAD_ETR = 1 AND (PAD_DIR <> 1 OR PAD_DIR IS NULL) AND PAD_PRO = 40 AND PAD_TVA IN ("R", "C");
  13.            END;'

El error que me da es nombre de columna no valido, me pasa lo mismo si pongo un literal (por ejemplo prueba, en lugar de la variable).

¿alguna pista?

Gracias.

Última edición por gnzsoloyo; 18/04/2016 a las 08:31
  #2 (permalink)  
Antiguo 18/04/2016, 08:09
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Problema con query dentro de procedure sp_msforeachdb

Estas usando un codigo dinamico, por lo que las variables literales van con apostrofes (') en este caso deben de ir con doble apostrofe quedando algo como esto:

Código SQL:
Ver original
  1. EXEC sp_msforeachdb 'use [?];
  2. if Exists(SELECT *
  3. FROM INFORMATION_SCHEMA.TABLES
  4. WHERE TABLE_NAME = ''N_CON'')
  5. BEGIN
  6. declare @nombrebd varchar(128)
  7. set @nombrebd=''?''
  8. SELECT DISTINCT PAD_EJE, PAD_NRE, PAD_SIT,PED_COD, TRE_COD, TRE_DES,PAD_NVR, PAD_IMP,ISNULL(PED_DES,"") AS PED_DES
  9. FROM ((((N_PAD LEFT OUTER JOIN N_TRE ON PAD_ETR = TRE_ETR AND PAD_PRO = TRE_PRO AND PAD_MUN = TRE_MUN AND PAD_TRE = TRE_COD)
  10. LEFT OUTER JOIN N_PED ON PAD_PER = PED_COD) LEFT OUTER JOIN N_VAL ON PAD_ETR = VAL_ETR AND PAD_PRO = VAL_PRO AND PAD_MUN = VAL_MUN AND PAD_COD = VAL_PAD)
  11. LEFT OUTER JOIN N_CAR ON VAL_ETR = CAR_ETR AND VAL_PRO = CAR_PRO AND VAL_MUN = CAR_MUN AND VAL_CAR = CAR_COD)
  12. WHERE PAD_ETR = 1 AND (PAD_DIR <> 1 OR PAD_DIR IS NULL) AND PAD_PRO = 40 AND PAD_TVA IN ("R", "C");
  13. END;'
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 19/04/2016, 00:27
 
Fecha de Ingreso: abril-2016
Mensajes: 2
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Problema con query dentro de procedure sp_msforeachdb

Solucionado, muchísimas gracias.

Etiquetas: bd, procedure, query, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:43.