SQL - como pasar parametros con el nombre de una base de datos al procedimiento sp_executesql

   
Vista:

como pasar parametros con el nombre de una base de datos al procedimiento sp_executesql

Publicado por Renzo (1 intervención) el 04/09/2014 18:28:02
Buenas necesito una ayuda con este procedimiento que estoy creando:

ALTER procedure [dbo].[CallFijoPlusBloke1]
@NOM_TABLA nvarchar(255),
@NOM_BASE nvarchar(255)
as
DECLARE @CONSULTA NVARCHAR(100),@TABLA nvarchar(50),
@Parametros nvarchar(500)
SET @Parametros = '@tabla nvarchar(50), @base nvarchar(50)'
set @CONSULTA='USE @BASE' + ' SELECT * FROM @TABLA'
EXECUTE sp_executesql @CONSULTA, @Parametros, @BASE = @NOM_BASE,@TABLA = @NOM_TABLA

el cual recibe 2 parametros que son el nombre de la tabla y el de la base de datos , al momento de ejecutarlo para crearlo no da error pero al llamarlo me sale el error:

Sintaxis incorrecta cerca de '@BASE'

mi pregunta es si se puede usar parametros para hacer referecia a una base de datos y a una tabla y cual seria la forma correcta de hacerlo?

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

como pasar parametros con el nombre de una base de datos al procedimiento sp_executesql

Publicado por Isaias (690 intervenciones) el 04/09/2014 22:45:38
R = Si se puede

Analiza con este query, donde esta el problema

DECLARE @IntVariable INT;
DECLARE @SQLString NVARCHAR(500);
DECLARE @ParmDefinition NVARCHAR(500);

/* Build the SQL string one time. */
SET @SQLString =
N'SELECT * FROM AdventureWorks2008R2.Sales.Store WHERE SalesPersonID = @SalesID';
/* Specify the parameter format one time. */
SET @ParmDefinition = N'@SalesID int';

/* Execute the string with the first parameter value. */
SET @IntVariable = 275;
EXECUTE sp_executesql @SQLString, @ParmDefinition,
@SalesID = @IntVariable;
/* Execute the same string with the second parameter value. */
SET @IntVariable = 276;
EXECUTE sp_executesql @SQLString, @ParmDefinition,
@SalesID = @IntVariable;

Te voy a dar un TIP, nunca en la vida podrás hacer un

SELECT * FROM @TABLA

¿De acuerdo?

A menos claro, que @Tabla, fuera una variable de tipo table
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar