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

Concatenar al crear tabla

Estas en el tema de Concatenar al crear tabla en el foro de SQL Server en Foros del Web. Amigos: tengo un query en sql server 2005 y queiro crear una tabla fisica al momento de hacer el select pero que ademas al nombre ...
  #1 (permalink)  
Antiguo 27/05/2010, 15:23
 
Fecha de Ingreso: agosto-2009
Mensajes: 8
Antigüedad: 14 años, 8 meses
Puntos: 0
Concatenar al crear tabla

Amigos:
tengo un query en sql server 2005 y queiro crear una tabla fisica al momento de hacer el select pero que ademas al nombre de la tabla que le quiero dar me concatene un parametro que traigo por ejemplo :

parametro = @contrato

select *
into tabla+@contrato
from contrato

para que la tabla se llame Tabla + el nombre del contrato que venga..

gracias
  #2 (permalink)  
Antiguo 27/05/2010, 16:55
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Concatenar al crear tabla

A ver si esto te ayuda, no se que quieres hacer exactamente, pero haciendolo todo cadena podrias ejecutar concatenaciones
Código:
Declare @Cadena nvarchar(MAX)
          ,  @Tabla nvarchar(100)
          ,  @Contrato

Select @Contraro = [Contrato]
         , @Tabla = [Tabla]

Select @Cadena = "Select * from " & @Tabla & "-" & @Contrato & " where [Condicion]"

exec (@Cadena)
  #3 (permalink)  
Antiguo 28/05/2010, 16:33
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: Concatenar al crear tabla

Prueba asi:
Código SQL:
Ver original
  1. EXEC('
  2.    select *
  3.    into tabla'+@contrato+'
  4.    from contrato'
  5. )
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #4 (permalink)  
Antiguo 28/05/2010, 16:42
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Concatenar al crear tabla

Que no es lo mismo??... bueno la idea es esa... Saludos.
  #5 (permalink)  
Antiguo 28/05/2010, 16:53
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: Concatenar al crear tabla

Te falto el INTO.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #6 (permalink)  
Antiguo 29/05/2010, 18:36
 
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 14 años
Puntos: 3
Respuesta: Concatenar al crear tabla

Tienes q declarar una variable
Declare @CT Char(8000)
Set @CT = ''
Set @CT = @CT + 'select *' + Char(13)
Set @CT = @CT + 'into dbo.tabla'+@contrato+Char(13)
Set @CT = @CT + 'from contrato'+Char(13)
Exec(@CT)
  #7 (permalink)  
Antiguo 30/06/2010, 08:29
 
Fecha de Ingreso: agosto-2009
Mensajes: 8
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Concatenar al crear tabla

ok. gracias a todos... disculpen no haber repomdido antes.. estaba fuera del trabajo ..
  #8 (permalink)  
Antiguo 30/06/2010, 13:12
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: Concatenar al crear tabla

mmmmmmmmmm, deberias de analizar si realmente necesitas una tabla por contrato o bien en tu tabla, colocar una columna del contratoid, comentario que hago, sin conocer tu entorno de desarrollo.

Compañeros, ya no sugieran el uso de EXEC (CADENA) y cambienlo por SP_EXECUTESQL @Variable
  #9 (permalink)  
Antiguo 01/07/2010, 07:33
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Concatenar al crear tabla

podrias decirnos que diferencia hay entre
exec(cadena) - sp_executeSql @Variable
  #10 (permalink)  
Antiguo 01/07/2010, 11:33
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: Concatenar al crear tabla

Eso ya se habia preguntado con anterioridad, lo vuelvo a colocar:

Para ejecutar una cadena, se recomienda utilizar el procedimiento almacenado sp_executesql, en lugar de una instrucción EXECUTE. Puesto que este procedimiento almacenado admite la sustitución de parámetros, sp_executesql es no sólo más versátil que EXECUTE, sino que, como además genera planes de ejecución con más probabilidades de que SQL Server los vuelva a utilizar, resulta más eficaz que éste

Cuando sp_executesql o la instrucción EXECUTE ejecutan una cadena, ésta se ejecuta como su propio lote independiente. SQL Server compila la instrucción o instrucciones Transact-SQL de la cadena en un plan de ejecución independiente del plan de ejecución del lote que contenía sp_executesql o la instrucción EXECUTE. Para los lotes independientes se aplican las siguientes reglas:

Las instrucciones Transact-SQL de la cadena EXECUTE o sp_executesql no se compilan en un plan de ejecución hasta que la instrucción EXECUTE o sp_executesql se han ejecutado. Las cadenas no se analizan ni se comprueba que tengan errores hasta que se han ejecutado. Los nombres a los que se hace referencia en las cadenas no se resuelven hasta que se han ejecutado.

Las instrucciones Transact-SQL de la cadena ejecutada no tienen acceso a ninguna de las variables declaradas en el lote que contiene la instrucción EXECUTE o sp_executesql. El lote que contiene la instrucción EXECUTE o sp_executesql no tiene acceso a las variables o cursores locales definidos en la cadena ejecutada.

Si la cadena ejecutada contiene una instrucción USE que cambia el contexto de la base de datos, este cambio sólo dura hasta que finaliza la ejecución de sp_executesql o la instrucción EXECUTE.

La ejecución de los dos lotes siguientes muestra estos puntos:

/*Show not having access to variables from the calling batch. */
DECLARE @CharVariable CHAR(3);
SET @CharVariable = 'abc';
/* sp_executesql fails because @CharVariable has gone out of scope. */
EXECUTE sp_executesql N'PRINT @CharVariable';
GO

/* Show database context resetting after sp_executesql finishes. */
USE master;
GO
EXECUTE sp_executesql N'USE AdventureWorks;'
GO
/* This statement fails because the database context
has now returned to master. */
SELECT * FROM Sales.Store;
GO

Etiquetas: concatenar, tablas
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 22:31.