Guardar Nombres de tablas en campos para consultas

04/04/2005 - 15:57 por SergioT | Informe spam
Hola

Es posible tomar el valor de un campo y asumirlo como nombre de tabla para
usarlo en una consulta o un join???

Ej.
T(clave,NombreTabla)
Clave NombreTabla
1 Tabla1
2 Tabla2
3 Tabla2

Select T.NombreTabla.*
from T
where T.clave=3

Gracias por su tiempo
Sergio

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
04/04/2005 - 16:19 | Informe spam
Sergio,

Eso que quieres hacer no es permitido es t-sql. Pudieras capturar el nombre
de la tabla en una variable y usar sql dinamico.

Ejemplo:

declare @t sysname
declare @sql nvarchar(4000)

select @t = nombre_tabla from t
set @sql = N'select * from ' + quotename(@t)

exec sp_executesql @sql
go

Existen muchos contras cuando usas sql dinamico. Aca te paso un link donde
puedes leer sobre esto.

The Curse and Blessings of Dynamic SQL
http://www.sommarskog.se/dynamic_sql.html


AMB

"SergioT" wrote:

Hola

Es posible tomar el valor de un campo y asumirlo como nombre de tabla para
usarlo en una consulta o un join???

Ej.
T(clave,NombreTabla)
Clave NombreTabla
1 Tabla1
2 Tabla2
3 Tabla2

Select T.NombreTabla.*
from T
where T.clave=3

Gracias por su tiempo
Sergio



Respuesta Responder a este mensaje
#2 Salvador Ramos
04/04/2005 - 16:24 | Informe spam
Si, pero para esto necesitas utilizar SQL Dinámico, con todos los
inconvenientes que esto incluye.

Para lo que indicas puedes hacer una función definida por el usuario que de
devuelva el nombre de la tabla, según la clave indicada, y luego montar una
cadena que ejecutes con sql dinámico. El script sería algo así:

...
SET @strSQL = 'SELECT * FROM ' + DevuelveTabla(3) + ' INNER JOIN...'
sp_excutesql @strSQL

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"SergioT" escribió en el mensaje
news:
Hola

Es posible tomar el valor de un campo y asumirlo como nombre de tabla para
usarlo en una consulta o un join???

Ej.
T(clave,NombreTabla)
Clave NombreTabla
1 Tabla1
2 Tabla2
3 Tabla2

Select T.NombreTabla.*
from T
where T.clave=3

Gracias por su tiempo
Sergio


Respuesta Responder a este mensaje
#3 Sergio T.
10/04/2005 - 18:57 | Informe spam
gracias por el dato

"Salvador Ramos" escribió en el
mensaje news:
Si, pero para esto necesitas utilizar SQL Dinámico, con todos los
inconvenientes que esto incluye.

Para lo que indicas puedes hacer una función definida por el usuario que
de devuelva el nombre de la tabla, según la clave indicada, y luego montar
una cadena que ejecutes con sql dinámico. El script sería algo así:

...
SET @strSQL = 'SELECT * FROM ' + DevuelveTabla(3) + ' INNER JOIN...'
sp_excutesql @strSQL

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"SergioT" escribió en el mensaje
news:
Hola

Es posible tomar el valor de un campo y asumirlo como nombre de tabla
para usarlo en una consulta o un join???

Ej.
T(clave,NombreTabla)
Clave NombreTabla
1 Tabla1
2 Tabla2
3 Tabla2

Select T.NombreTabla.*
from T
where T.clave=3

Gracias por su tiempo
Sergio






Respuesta Responder a este mensaje
#4 Sergio T.
10/04/2005 - 18:57 | Informe spam
Gracias por tu tiempo

"Alejandro Mesa" escribió en el
mensaje news:
Sergio,

Eso que quieres hacer no es permitido es t-sql. Pudieras capturar el
nombre
de la tabla en una variable y usar sql dinamico.

Ejemplo:

declare @t sysname
declare @sql nvarchar(4000)

select @t = nombre_tabla from t
set @sql = N'select * from ' + quotename(@t)

exec sp_executesql @sql
go

Existen muchos contras cuando usas sql dinamico. Aca te paso un link donde
puedes leer sobre esto.

The Curse and Blessings of Dynamic SQL
http://www.sommarskog.se/dynamic_sql.html


AMB

"SergioT" wrote:

Hola

Es posible tomar el valor de un campo y asumirlo como nombre de tabla
para
usarlo en una consulta o un join???

Ej.
T(clave,NombreTabla)
Clave NombreTabla
1 Tabla1
2 Tabla2
3 Tabla2

Select T.NombreTabla.*
from T
where T.clave=3

Gracias por su tiempo
Sergio



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida