ti-enxame.com

usando a função Object_id () com #tables

Quero garantir se existe ou não uma tabela temporária no meu banco de dados.

Tentei usar a função OBJECT_ID(), mas parece que não posso usá-lo com tabelas temporárias.

Como posso resolver esse problema?

18
Alaa

Usar

OBJECT_ID('tempdb..#foo')

para obter o ID de uma tabela temporária ao executar no contexto de outro banco de dados.

21
Martin Smith

Quando OBJECT_ID é chamado, para tabela Temporária/tabela Hash TEMPDB ele deve ser especificado, a menos que já esteja funcionando no banco de dados.

Verifico no SQL2008 e verifico abaixo.

USE SampleDB
create table #tt1 (dummy int)
select OBJECT_ID('SampleDB..#tt1')  -- returns NULL
select OBJECT_ID('tempdb..#tt1')   -- returns ID
6
Turbot

De Catálogo de códigos do SQL Server

How do you check if a temp table exists?
You can use IF OBJECT_ID('tempdb..#temp') IS NOT NULL

Script SQL

--Check if it exists
IF OBJECT_ID('tempdb..#temp') IS NOT NULL
BEGIN
PRINT '#temp exists!'
END
ELSE
BEGIN
PRINT '#temp does not exist!'
END
2
Lieven Keersmaekers

Use isso para alterar o contexto da chamada OBJECT_ID para tempdb

OBJECT_ID('tempdb..#table')

OBJECT_ID no MSDN mostra nomes de objetos em 3 partes. Nesse caso, você pode omitir schema_name

OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]

2
gbn