SQL SERVER : TABLA TEMPORAL
TABLA LOCAL CON ALCANCE LOCAL
USE NorhtwindGO
-- Creamos una tabla temporal dentro de esta
CREATE TABLE #temp(id INT)
-- Verificamos si nuestra tabla existe
IF OBJECT_ID('tempdb..#temp') IS NOT NULL
BEGIN
PRINT '¡#temp existe!'
END
ELSE
BEGIN
PRINT '¡#temp does not exist!'
END
-- Otra forma de verificar si esta tabla existe es utilizando un segundo parámetro opcional no documentado
IF OBJECT_ID('tempdb..#temp','u') IS NOT NULL
BEGIN
PRINT '¡#temp existe!'
END
ELSE
BEGIN
PRINT '¡#temp no existe!'
END
-- No hagas esto porque esto verificara la base de datos local y por lo tanto retornara no existe
IF OBJECT_ID('tempdb..#temp','local') IS NOT NULL
BEGIN
PRINT '¡#temp existe!'
END
ELSE
BEGIN
PRINT '¡#temp no existe!'
END
-- A menos que cambiemos el contexto de la base de datos a algo como esto
USE tempdb
GO
-- Ahora la tabla existe de nuevo
IF OBJECT_ID('tempdb..#temp','local') IS NOT NULL
BEGIN
PRINT '¡#temp exists!'
END
ELSE
BEGIN
PRINT '¡#temp no existe!'
END
-- Volvamos a Norhtwind de nuevo
USE Norhtwind
GO
-- Verificamos si la tabla temporal existe
IF OBJECT_ID('tempdb..#temp') IS NOT NULL
BEGIN
PRINT '¡#temp exists!'
END
ELSE
BEGIN
PRINT '¡#temp does not exist!'
END
-- Ahora abre una nueva ventana del Analizador de Consultas (Query Analyzer) (CTRL + N) y -- ejecuta este código de nuevo. Verificar si existe
IF OBJECT_ID('tempdb..#temp') IS NOT NULL
BEGIN
PRINT '¡#temp existe!'
END
ELSE
BEGIN
PRINT '¡#temp no existe!'
END
-- La tabla no existe y es correcto ya que esta es una tabla temporal de alcance local, no una tabla temporal de alcance global.
Probemos ahora esta otra sentencia.
-- Crea una tabla temporal de alcance global
-- Note los 2 signos de número, esto crea la tabla a nivel global
TABLA LOCAL CON ALCANCE GLOBAL
-- Verifica si esta existe
IF OBJECT_ID('tempdb..##temp') IS NOT NULL
BEGIN
PRINT '¡##temp existe!'
END
ELSE
BEGIN
PRINT '¡##temp no existe!'
END
[/sql]
-- Existe, correcto?
-- Ahora ejecutamos el mismo código en una ventana nueva del Analizador de consultas (Query Analyzer) (CTRL + N).
-- Verificamos si existe
IF OBJECT_ID('tempdb..##temp') IS NOT NULL
BEGIN
PRINT '¡##temp existe!'
END
ELSE
BEGIN
PRINT '¡##temp no existe!'
END
-- Y si esta esta vez existe ya que esta es una tabla de alcance global.
Ejemplo : Comprobar si la tabla temporal existe y eliminar si es que existe antes de crear una tabla temporal
IF OBJECT_ID('tempdb..#Results') IS NOT NULL
DROP TABLE #Results
CREATE TABLE #Results
(
Company CHAR(3),
StepId TINYINT,
FieldId TINYINT,
)
select company, stepid, fieldid from #Results
Comentarios
Publicar un comentario