lhmota 0 Denunciar post Postado Junho 25, 2013 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
Motta 645 Denunciar post Postado Junho 25, 2013 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
lhmota 0 Denunciar post Postado Junho 26, 2013 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
Motta 645 Denunciar post Postado Junho 26, 2013 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
lhmota 0 Denunciar post Postado Junho 26, 2013 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
Motta 645 Denunciar post Postado Junho 26, 2013 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