Usuário com melhor resposta
Como descobrir se uma tabela temporária ja existe?

Pergunta
-
Olá,
Como faço para descobrir se uma tabela temporária já existe, o código abaixo encontra-se dentro de uma Stored Procedure, e, a mesma poderá ser executada várias vezes durante uma unica conexão. Gostaria de criar a tabela temporaria somente na primeira chamada a stored procedure.
CREATE TABLE ##TABTEMP (
[RECNUM] [decimal](28, 0) IDENTITY (1, 1) NOT NULL ,
[EMPRESA] [char](3) NOT NULL ,
[VENDEDOR] [int] NOT NULL ,
[ANO] [int] NOT NULL ,
[MES] [int] NOT NULL ,
[QTD_TOTAL] [decimal] (18,4) NOT NULL ,
[VLR_VENDIDO] [decimal] (18,2) NOT NULL ,
[VLR_RESULTADO] [decimal] (18,2) NOT NULL)INSERT INTO ##TABTEMP (EMPRESA, VENDEDOR, ANO,MES,QTD_TOTAL,VLR_VENDIDO,VLR_RESULTADO)
SELECT EMPRESA, VENDEDOR, ANO,MES,QTD_TOTAL,VLR_VENDIDO,VLR_RESULTADO FROM nmaia.dbo.vw_resvenda
WHERE
empresa = '01' and
vendedor = 2 and
mes between 1 and 5 and
ano = 2005sds,
J Evangelista
Respostas
-
Boa tarde J Evangelista
Não conheço o seu cenário mas você já pensou em usar uma tabela temporária local ao invés de tabela temporária global? Abaixo tem um exemplo de código.
create table ##t(i int )
if object_id('tempdb..##t') is not null
print 'existe'
else
print 'nao existe' -
As tabelas temporárias são criadas no banco de dados TempDB vc pode dar um SELECT na tabela SYSOBJECTS para verificar se a mesma existe, se vc precisar checar qualquer outra tabela do seu banco de dados vc também pode utilizar a tabela SYSOBJCTS, no SQL Server 2005 o nome da tabela é Sys.Objects , segue abaixo um exemplo prático:
SELECT NAME FROM SYSOBJECTS WHERE NAME = 'SUATABELA'
Espero ter ajudado...
Todas as Respostas
-
Olá,
Já encontrei uma maneira de identificar se a tabela já existe, conforme abaixo:
if object_id('tempdb..##TabTemp') is not null drop table ##TabTemp
de qualquer forma se existir outras maneiras gostaria de saber!
Obrigado a todos!
sds,
J Evangelista
-
Boa tarde J Evangelista
Não conheço o seu cenário mas você já pensou em usar uma tabela temporária local ao invés de tabela temporária global? Abaixo tem um exemplo de código.
create table ##t(i int )
if object_id('tempdb..##t') is not null
print 'existe'
else
print 'nao existe' -
As tabelas temporárias são criadas no banco de dados TempDB vc pode dar um SELECT na tabela SYSOBJECTS para verificar se a mesma existe, se vc precisar checar qualquer outra tabela do seu banco de dados vc também pode utilizar a tabela SYSOBJCTS, no SQL Server 2005 o nome da tabela é Sys.Objects , segue abaixo um exemplo prático:
SELECT NAME FROM SYSOBJECTS WHERE NAME = 'SUATABELA'
Espero ter ajudado...
-