none
procedure RRS feed

  • Pergunta

  • Olá a todos..

    Tenho o seguinte código:

    alter procedure teste_dados
    as
    begin 
    create table tb_teste (
    nome varchar(100),
    cpf varchar(100)
    )
    end

    Criei a tabela dentro da procedure. Da primeira vez está executando, da segunda vez fala que a tabela já existe.

    Alguém pode me ajudar

    quinta-feira, 13 de fevereiro de 2014 17:44

Respostas

  • Mari, veja se é isto o que quer, fiz o exemplo abaixo onde na procedure é verificado se a tabela ja existe, caso não exista é criada, e executa o restante do codigo, caso exista pula a parte da criação e continua o codigo.

     Create procedure teste_dados
     as
     begin 
     
     IF OBJECT_ID (N'tb_teste', N'U') IS NULL
     begin
        create table tb_teste (
     nome varchar(100),
     cpf varchar(100)
     )
     end   
     
     
     
     -- AQUI VAI O RESTANTE DO SEU CODIGO
     END


    Alexandre Matayosi Conde Mauricio.

    • Sugerido como Resposta Thiago Patrocinio quinta-feira, 13 de fevereiro de 2014 18:43
    • Marcado como Resposta Giovani Cr quarta-feira, 19 de fevereiro de 2014 11:57
    quinta-feira, 13 de fevereiro de 2014 18:40

Todas as Respostas

  • Boa tarde,

    Qual é objetivo da procedure?

    Essa tabela está sendo criada para que?

    Dependendo do caso você pode verificar se a tabela já existe e executar um Drop antes do Create:

    IF OBJECT_ID (N'tb_teste', N'U') IS NOT NULL
        DROP TABLE tb_teste;

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    quinta-feira, 13 de fevereiro de 2014 18:21
  • É simplesmente uma tabela exemplo. Estou aprendendo e tive a duvida se poderia ou não criar uma tabela dentro de uma procedure .

    NÃO QUERO 'DROPAR' 

    O que quero  é verificar se ela existe e fazer com que os dados existentes nela executem. 

    Eu sei verificar se uma tabela existe no sistema

    Desse jeito> 

    if exists(select * from sys.objects where object_id = object_id('tb_teste')) 
    print  'a'
    else
    print 'b' 

    Mas não sei ligar a procedure.

    quinta-feira, 13 de fevereiro de 2014 18:26
  • Mari, da primeira vez funcionou por que a tabela ainda não existia, na segunda vez como ela ja existia retornou o erro informando que esta tabela ja existe, voce pode colocar o codigo acima dentro da procedure ou criar qualquer tabela dentro dela, desde que não exista.

    Alexandre Matayosi Conde Mauricio.

    quinta-feira, 13 de fevereiro de 2014 18:30
  • Ok, entendi. Mas o meu problema ainda não se resolveu. Mesmo colocando o código acima na procedure não consigo executa-la.
    quinta-feira, 13 de fevereiro de 2014 18:34
  • Mari, veja se é isto o que quer, fiz o exemplo abaixo onde na procedure é verificado se a tabela ja existe, caso não exista é criada, e executa o restante do codigo, caso exista pula a parte da criação e continua o codigo.

     Create procedure teste_dados
     as
     begin 
     
     IF OBJECT_ID (N'tb_teste', N'U') IS NULL
     begin
        create table tb_teste (
     nome varchar(100),
     cpf varchar(100)
     )
     end   
     
     
     
     -- AQUI VAI O RESTANTE DO SEU CODIGO
     END


    Alexandre Matayosi Conde Mauricio.

    • Sugerido como Resposta Thiago Patrocinio quinta-feira, 13 de fevereiro de 2014 18:43
    • Marcado como Resposta Giovani Cr quarta-feira, 19 de fevereiro de 2014 11:57
    quinta-feira, 13 de fevereiro de 2014 18:40