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

usar variable como nombre de tabla en store procedure

Estas en el tema de usar variable como nombre de tabla en store procedure en el foro de SQL Server en Foros del Web. hola quiero saber si se puede usar una variable como nombre de tabla en un SP. Ya lo intente con el siguiente ejemplo alter PROCEDURE ...
  #1 (permalink)  
Antiguo 01/04/2009, 11:41
Avatar de asassa  
Fecha de Ingreso: julio-2008
Ubicación: En el DF ectuoso
Mensajes: 240
Antigüedad: 15 años, 9 meses
Puntos: 0
usar variable como nombre de tabla en store procedure

hola quiero saber si se puede usar una variable como nombre de tabla en un SP.

Ya lo intente con el siguiente ejemplo

alter PROCEDURE consulta
@edo varchar (20)
AS
BEGIN
SELECT * from "@edo" ;
END
GO

y lo ejecuto asi.

exec consulta @edo='VER';

y me marca el siguiente mensaje
Invalid object name '@edo'.

alguien me puede decir si se puede hacer eso o cual es la manera correcta de la sintaxis, gracias
  #2 (permalink)  
Antiguo 01/04/2009, 12:01
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: usar variable como nombre de tabla en store procedure

Necesitas usar SQL dinamico.
Código sql:
Ver original
  1. ALTER PROCEDURE consulta
  2. @edo VARCHAR (20)
  3. AS
  4. BEGIN
  5. EXEC('SELECT * from '+@edo)
  6. END
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 01/04/2009, 13:14
Avatar de asassa  
Fecha de Ingreso: julio-2008
Ubicación: En el DF ectuoso
Mensajes: 240
Antigüedad: 15 años, 9 meses
Puntos: 0
De acuerdo Respuesta: usar variable como nombre de tabla en store procedure

muchuias gracias si me funciono, pero como tube probelmas con el = y con ' les dejo una sintaxis de como lo hice

alter procedure consulta
@var varchar(80),
@NomTabla nVarChar(15),
@index int,
@num_regs int

AS
DECLARE @StringSQL nVarchar(200)
BEGIN
DECLARE @maximo numeric
DECLARE @minimo numeric
declare @buscar nvarchar(10)
declare @buscar1 nvarchar(80)
declare @buscar2 nvarchar(10)
SELECT @maximo = (@index * @num_regs)
SELECT @minimo = @maximo - (@num_regs - 1)
CREATE TABLE #tmpListado(
ID int IDENTITY(1,1),

CVE_ELECT varchar(20),
NOMBRE varchar(80)
)

--set @buscar1 ='''' + '%' + @var + '%' + ''''
--set @buscar2='%"'
SET @StringSQL =('insert #tmpListado Select ' + 'CVE, ' + 'NOMBRE ' + 'from ' + @NomTabla + ' where' + ' NOMBRE ' + '= '+ '''' + @var + '''')
print @StringSQL;
EXEC (@StringSQL)

select * from #tmpListado


gracias
  #4 (permalink)  
Antiguo 01/04/2009, 23:35
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: usar variable como nombre de tabla en store procedure

Te suguiero que dejes de utilizar EXEC (@VariableCadena) y lo cambies por EXEC SP_EXECUTESQL @VariableNVarcharCadena
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 10:54.