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

Tablas temporas y alter table

Estas en el tema de Tablas temporas y alter table en el foro de SQL Server en Foros del Web. Hola a todos Me pasa una cosa curiosa al ejecutar código SQL. En una consulta SQL estoy creando una tabla temporal, posteriormente inserto valores en ...
  #1 (permalink)  
Antiguo 22/01/2011, 16:25
 
Fecha de Ingreso: abril-2003
Ubicación: España
Mensajes: 12
Antigüedad: 20 años, 11 meses
Puntos: 0
Tablas temporas y alter table

Hola a todos

Me pasa una cosa curiosa al ejecutar código SQL.

En una consulta SQL estoy creando una tabla temporal, posteriormente inserto valores en ella y luego utilizo ALTER TABLE para crear nuevos campos en la tabla temporal.

El problema viene después de utilizar ALTER TABLE, ya que si intento acceder a los nuevos campos me salta el error de que el campo no es valido.

Para ejecutar la consulta utilizo .NET ExecuteNonQuery.

Si ejecuto la consulta por partes, cada una en la misma conexión pero en diferentes ExecuteNonQuery, no me da problemas. Es decir,

1) Ejecuto primero el código que crea la tabla temporal
2) Inserto los datos en la tabla
3) Ejecuto el código con los ALTER TABLE
4) Accedo a los nuevos campos


¿Sabéis porque si ejecuto todo el código junto da error, pero si lo ejecuto por partes no lo da?

Ejemplo de código, no tiene mucho sentido pero es para que os hagáis una idea:

CREATE TABLE #TablaTemporal
(
Pais int NULL, Nombre int NULL
)

INSERT INTO TablaTemporal
... VALORES

ALTER TABLE #TablaTemporal ADD [InternalID] int NOT NULL IDENTITY (1,1)
ALTER TABLE #TablaTemporal ADD [RsID] int

UPDATE #TablaTemporal
SET RsID = [InternalID]-1+(SELECT isnull(Max (RsID)+1,1) From Paises)

ALTER TABLE #TablaTemporal DROP COLUMN [InternalID]

Gracias de antemano.
  #2 (permalink)  
Antiguo 24/01/2011, 09:05
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 7 meses
Puntos: 39
Respuesta: Tablas temporas y alter table

He aqui el mismo caso: http://www.dbnewsgroups.net/sqlprogr...mp-tables.aspx

Este problema solo ocurre en SQL 2000. Al agregar una columna a una tabla temporal, SQL ejecuta agrega dicha columna despues de ejecutar todo el codigo, por eso al momento de hacer referencia a dicha columna da error.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 24/01/2011, 09:07
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 7 meses
Puntos: 39
Respuesta: Tablas temporas y alter table

La solucion:
Código SQL:
Ver original
  1. CREATE TABLE #TablaTemporal
  2. (
  3. Pais INT NULL, Nombre INT NULL
  4. )
  5.  
  6. INSERT INTO #TablaTemporal ... VALORES
  7.  
  8. ALTER TABLE #TablaTemporal ADD [InternalID] INT IDENTITY (1,1)
  9. ALTER TABLE #TablaTemporal ADD [RsID] INT
  10. GO
  11. UPDATE #TablaTemporal SET [RsID] = [InternalID]-1+(SELECT isnull(MAX (RsID)+1,1) FROM Paises)
  12.  
  13. ALTER TABLE #TablaTemporal DROP COLUMN [InternalID]
  14. GO
  15. SELECT * FROM #TablaTemporal
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.

Etiquetas: tablas, table, alterar
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:14.