IF EXISTS, Verificar Si Una Tabla Temporal Existe en SQL Server
Artículo original: http://sqlservercodebook.blogspot.com/2008/03/check-if-temporary-table-exists.htmlTraducido por: Alfredo Arias
Verificar Si Una Tabla Temporal Existe
¿Como verifico si una tabla temporal existe tanto a nivel local como a nivel global en SQL Server? Para hacerlo puedes usar IF EXISTS
IF OBJECT_ID('tempdb..#temp') IS NOT NULL
¡Veamos como funciona!
-- Cambiamos el contexto al de nuestra base de datos de ejemplo
USE Norhtwind
GO
-- 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 parametro 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
CREATE TABLE ##temp(id INT)
-- 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.
No hay comentarios:
Publicar un comentario