none
Como descobrir se uma tabela temporária ja existe? RRS feed

  • 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          = 2005

    sds,

    J Evangelista

    quinta-feira, 28 de dezembro de 2006 18:45

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'

    quinta-feira, 28 de dezembro de 2006 18:58
  • 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...

    sexta-feira, 29 de dezembro de 2006 11:32

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


     

    quinta-feira, 28 de dezembro de 2006 18:54
  • 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'

    quinta-feira, 28 de dezembro de 2006 18:58
  • 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...

    sexta-feira, 29 de dezembro de 2006 11:32
  •  

     bom o select so vai rolar para as temporairas globais, para as temporarias # vc. pode usar a is_object sem problemas ...

     

    Abs;

    terça-feira, 2 de janeiro de 2007 09:06