Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lhmota

Comando equivalente em Oracle

Recommended Posts

E ai galera, boa tarde!

 

Tenho conhecimento de SQL Server, e como todo usuário que esta migrando de plataforma estou com várias dúvidas.

 

Hoje tenho um processo que roda no Excel por Adonet e devido a isto preciso fazer vários ajustes, diferente de quando rodado diretamente no SGBD.

 

Em SQL Server costumava consultar se uma tabela temporária existia antes de fazer o processo, se sim, eu tomava uma linha de comando, se não eu a criava.

 

Era possível fazer isto pelo seguinte comando:

If Object_Id ('Tempdb..#table_name') is Not Null

Drop table #table_name

 

Já no Oracle, não estou conseguindo fazer o mesmo, tentei algo parecido como:

 

Declare tab nchar(50);

 

Begin

 

If

(SELECT TABLE_NAME FROM all_tables WHERE TABLE_NAME = 'TB_TESTE') is not null

Then

drop table TB_TESTE_CARTOES

end If;

 

End;

 

 

Primeiro dia usando Oracle, se tiver totalmente errado, por favor, relevem... :yay:

 

 

Alguem pode me ajudar a achar um código ou programação equivalente a que eu utiliza no SS?

 

Desde já agradeço muito!

Compartilhar este post


Link para o post
Compartilhar em outros sites

No Oracle uso uma Global Temporary Table, ela pode ter uma opção de deletar os dados ao sair da procedure.

 

Não precisa testar se ela existe.

 

 

CREATE GLOBAL TEMPORARY TABLE GTT_XPTO ( X VARCHAR2(4) ON COMMIT PRESERVE ROWS ;
CREATE OR REPLACE
PROCEDURE PROC_XPTO

IS                

BEGIN

  DELETE FROM GTT_XPTO;

  INSERT INTO GTT_XPTO (X) VALUES ('1');

  --FAZ ALGUMA COISA

  DELETE FROM GTT_XPTO;

END;

 



Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta,

 

O problema é que nesse server não tenho acesso para criar procedures, sou apenas usuário de consulta.

 

 

Tendo em vista que quando executo a query pelo Adonet e Excel, não posso receber mais de uma linha de resultado,

 

então foi usar no inicio o comando:

 

 

Set Feedback Off

 

Por isso tenho a necessidade de verificar se a tabela existe ou não...

 

Tenha alguma outra sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode tentar algo do tipo

 

 

declare
  vn_tabela number(1);
  ...
begin
  ...
  select count(*) qtd into vn_tabela
  from user_tables
  where table_name = 'TB_TESTE_CARTOES';
  if vn_tabela > 0 then
     ...
  end if;
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta,

 

 

 

Enfim, consegui, segue o codigo...

 

declare vn_tabela int;
begin
select count(*) qtd
into vn_tabela
from all_tables
where table_name = 'TB_TESTE';
if vn_tabela > 0 then
execute immediate 'drop table TB_TESTE';
end if;
end;
Valeu ajuda!
Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

poderia ser também já que quer dropar

 

 

begin
  drop table xpto;
exceotion
   when others then
     null;--ignora
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.