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

eLIMInar Tabla Temporal si es que existe

Estas en el tema de eLIMInar Tabla Temporal si es que existe en el foro de SQL Server en Foros del Web. Hola weyes rebeldes... la cosa es que tengo un ciclo while en el que creo una tabla temporal pero a la segunda vuelta se me ...
  #1 (permalink)  
Antiguo 26/04/2007, 08:49
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 1 mes
Puntos: 47
eLIMInar Tabla Temporal si es que existe

Hola weyes rebeldes... la cosa es que tengo un ciclo while en el que creo una tabla temporal pero a la segunda vuelta se me cae el procedimiento porque dice que la tabla ya existe. Como verificar si ya existe para eliminarla

Código:
While @x <= @NFilas
Begin

	IF EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'#Temp') AND type in (N'U'))
	BEGIN
		DROP TABLE #Temp
	END

	SELECT	secuencia=IDENTITY(int, 1,1),IdEmpresa, IdOficina,IdSolicitudCompra,
		Cantidad,CantidadFacturada
	INTO	#Temp
	FROM	Cmp_SolicitudCompra
	.
	.
	.
	set @x=@x+1
End
Intenté ponerle if exist, igualito cuando se genera el script con el wizard pero tampoco funca, no entra por el if.

si pongo drop table #temp antes del select se me cae a la primera ya que la tabla temporal aun no ha sido creada, pero si le pongo se me cae a la segunda vuelta porque ya ha sido creada
  #2 (permalink)  
Antiguo 26/04/2007, 09:13
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 1 mes
Puntos: 47
Re: eLIMInar Tabla Temporal si es que existe

Según MIth en este para verficar si una tabla existe se lo hace así:

Código:
IF OBJECT_ID('dbo.mitabla') IS NULL
BEGIN
--no existe
END
ELSE
BEGIN
--existe
END
Y modificado yo lo tengo así:

Código:
IF OBJECT_ID('#Temp') IS NOT NULL
BEGIN
	DROP TABLE #Temp
	IF (@@error <> 0)
	BEGIN
		ROLLBACK TRAN
		RETURN
	END
END
Pero nunca entra al if. Como que con tablas temporales no funciona aquello
  #3 (permalink)  
Antiguo 26/04/2007, 11:27
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Re: eLIMInar Tabla Temporal si es que existe

Para las tablas temps cambia un poco. Porque las tablas temps se almacenan en tempdb.

IF OBJECT_ID('tempdb..#Temp') IS NULL
BEGIN
--no existe
END
ELSE
BEGIN
--existe
END

Eso lo aprendí aquí mismo en los foros
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #4 (permalink)  
Antiguo 26/04/2007, 12:49
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 1 mes
Puntos: 47
Re: eLIMInar Tabla Temporal si es que existe

Como diría un amigo de antenitas... lo sospeché desde un principio.

Thanks


No lo encontré en el forito. Bueno, mejor dicho ahora si lo encontré en el foro
  #5 (permalink)  
Antiguo 02/05/2007, 12:27
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 1 mes
Puntos: 47
Re: eLIMInar Tabla Temporal si es que existe

Oye MIth... una pregu, y si mi tabla temporal no es de esas que tienen un # sino dos #

En ese caso en que lugar pregunto si existe?

Gracias men, siempre ayudando
  #6 (permalink)  
Antiguo 02/05/2007, 15:05
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Re: eLIMInar Tabla Temporal si es que existe

Igual, toda tabla temporal se almacena en tempdb.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
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 02:25.