SQL Dinámico con USE

10/11/2006 - 23:38 por Rafa Vidal | Informe spam
Buenas noches:

¿Existe forma de hacer un USE de manera dinámica?

Debo hacer un USE que me permita realizar un SELECT de una tabla de la base
de datos.
Tanto @db como @table pueden ser variables.
El problema se produce al realizar el USE de manera dinámica.

DECLARE @db sysname
DECLARE @table sysname
DECLARE @sql nvarchar(4000)

USE master

SET @db = 'pubs'

SET @table = 'authors'

SELECT @sql = 'USE ' + @db
EXEC(@sql)

SELECT @sql = 'SELECT * FROM ' + @table
EXEC(@sql)

Produciendo el mensaje de error:
Servidor: mensaje 208, nivel 16, estado 1, línea 1
El nombre de objeto 'authors' no es válido.

Recuerdos
Rafa Vidal
 

Leer las respuestas

#1 Isaias
10/11/2006 - 23:58 | Informe spam
Rafael

No es necesario el USE:

declare @SQLString NVARCHAR(100),
@db VARCHAR(15),
@table VARCHAR(15)

SET @db = 'master'
SET @table = 'SYSUSERS'
SET @SQLString = N'SELECT * FROM '+@db+'.dbo.'+@table
EXEC sp_executesql @SQLString
Saludos
IIslas


"Rafa Vidal" wrote:

Buenas noches:

¿Existe forma de hacer un USE de manera dinámica?

Debo hacer un USE que me permita realizar un SELECT de una tabla de la base
de datos.
Tanto @db como @table pueden ser variables.
El problema se produce al realizar el USE de manera dinámica.

DECLARE @db sysname
DECLARE @table sysname
DECLARE @sql nvarchar(4000)

USE master

SET @db = 'pubs'

SET @table = 'authors'

SELECT @sql = 'USE ' + @db
EXEC(@sql)

SELECT @sql = 'SELECT * FROM ' + @table
EXEC(@sql)

Produciendo el mensaje de error:
Servidor: mensaje 208, nivel 16, estado 1, línea 1
El nombre de objeto 'authors' no es válido.

Recuerdos
Rafa Vidal



Preguntas similares