Ir para conteúdo
Fórum Script Brasil
  • 0

Command Window - Deleta a tabela condicionalmente


FALL

Pergunta

Pessoal, preciso fazer um script e estou utilizando o PL/SQL - Command Window para validar o script, posteriormente devo rodar pelo agendador de tarefas e nunca mais devo mexer. Isso porque ele vai conter a inteligência que preciso e ficarei livre de toda hora pesquisar se a tabelinha que alguém deveria ter criado foi feita de verdade.

Então, verifica se a tabela existe, se existir deleta e cria uma nova, se não deixa a antiga como está.

Segue o que fiz...

DECLARE

QTD_REG NUMBER(9) :=0;

BEGIN

SELECT COUNT(*)*1

INTO QTD_REG

FROM TESTE;

EXCEPTION

WHEN NO_DATA_FOUND THEN

QTD_REG :=0;

END;

BEGIN

IF QTD_REG > 6 THEN

BEGIN

DROP TABLE TESTE2;

CREATE TABLE TESTE2 AS

SELECT *

FROM TESTE;

END;

END IF;

END;

EXIT;

/

Isso está me gerando o seguinte erro:

ORA-06550: line 12, column 1:

PLS-00103: Encountered the symbol "BEGIN"

ORA-06550: line 15, column 5:

PLS-00103: Encountered the symbol "DROP" when expecting one of the following:

begin case declare exit for goto if loop mod null pragma

raise return select update while with <an identifier>

<a double-quoted delimited-identifier>

É com vocês pessoal...

Editado por FALL
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

DECLARE

QTD_REG NUMBER(9) :=0;

BEGIN

SELECT COUNT(*)*1

INTO QTD_REG

FROM TESTE;

EXCEPTION

WHEN NO_DATA_FOUND THEN

QTD_REG :=0;

END;

BEGIN

IF QTD_REG > 6 THEN

BEGIN // indicação do erro nesta linha

DROP TABLE TESTE2; // indicação do erro nesta linha

CREATE TABLE TESTE2 AS

SELECT *

FROM TESTE;

END;

END IF;

END;

EXIT;

/

ORA-06550: Linha 12, coluna 1,:

PLS-00103: Encontrado o símbolo "BEGIN"

ORA-06550: Linha 15, coluna 5,:

PLS-00103: Encontrado o simbolo "DROP" ao esperar um dos seguinte:

Declare Begin para goto se a repetição mod retornar nulo

em um select update enquanto com <um identificador> ou

<um delimitador de aspas duplas>

Aparentemente, indica que o erro está no begin na linha 12 e o erro seguinte vem por tabela, então experimente tirá-lo

DECLARE

QTD_REG NUMBER(9) :=0;

BEGIN

SELECT COUNT(*)*1

INTO QTD_REG

FROM TESTE;

EXCEPTION

WHEN NO_DATA_FOUND THEN

QTD_REG :=0;

END;

BEGIN

IF QTD_REG > 6 THEN

DROP TABLE TESTE2;

CREATE TABLE TESTE2 AS

SELECT *

FROM TESTE;

END IF;

END;

EXIT;

/

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...