Página 1 de 1

Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Sex, 13 Abr 2012 2:21 pm
por analima.ilha
Preciso fazer uma procedure que busque todas as tabelas com inicio "tblw"

e não sei qual logica usar, alguém pode me ajudar?

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Sex, 13 Abr 2012 4:32 pm
por Trevisolli
Boa tarde.

Tenta essa querie:

Selecionar tudo


select *
  from all_tables
 where table_name like 'TBLW%' 
Lembrando que, o conteúdo de table_name é maiúsculo.
Qualquer coisa, manda pra gente.

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Seg, 16 Abr 2012 4:31 pm
por analima.ilha
Eu usei essa query

so que preciso usar isso dentro de uma procedure, e não to conseguindo..

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Seg, 16 Abr 2012 4:51 pm
por DanielNN
Dentro de procedure é necessário atribuir a uma variável o retorno do select.
Não se pode fazer um simples "select ... from". É preciso fazer um:

Selecionar tudo

SELECT ....
INTO...
FROM ...
WHERE...

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Seg, 16 Abr 2012 5:01 pm
por analima.ilha
Mesmo assim não funcionou

já tentei um cursor... mas também não funciona...
=S

criado com erros de compilaçao.

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Seg, 16 Abr 2012 5:36 pm
por DanielNN
Qual erro e o trecho correspondente?

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Seg, 16 Abr 2012 9:15 pm
por Trevisolli
Você deseja retornar para algum front end? .NET ? Java ?
Caso positivo, aqui no fórum dá uma pesquisada por REF CURSOR, que vai achar exemplos interessantes, como este:
Ref Cursor

Qualquer coisa, manda pra gente.

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Ter, 17 Abr 2012 11:14 am
por analima.ilha
Esta assim:

Selecionar tudo

  cursor c1 is (SELECT object_name from dba_objects WHERE object_name LIKE '%CMD%');
   BEGIN
   
    dbms_output.put_line('inicio');
    
    FOR employee_rec in c1
    LOOP
    dbms_output.put_line(employee_rec.object_name);
    END LOOP;

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Ter, 17 Abr 2012 11:20 am
por DanielNN
Tirando o fato do "END;" no final do teu código, não vejo problemas nesta procedure:

Selecionar tudo

DECLARE
cursor c1 is (SELECT object_name from dba_objects WHERE object_name LIKE '%CMD%');
BEGIN

dbms_output.put_line('inicio');

FOR employee_rec in c1
LOOP
dbms_output.put_line(employee_rec.object_name);
END LOOP;
END;
Até executei aqui sem problemas.
Talvez seja problema de permissão.

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Ter, 17 Abr 2012 11:25 am
por analima.ilha
Pois é,

ele foi criada dentro de body package

nem sei porque não ta funcionando...

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Ter, 17 Abr 2012 11:31 am
por DanielNN
Se você executa este codigo acima que postei sem problemas.
Então o problema é a permissão do usuário que esta executando a procedure.

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Ter, 17 Abr 2012 11:42 am
por analima.ilha
Ta sendo criada com erros de compilacao.... =/

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Ter, 17 Abr 2012 12:24 pm
por DanielNN
Qual o erro??

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Ter, 17 Abr 2012 5:40 pm
por analima.ilha
esse erro:


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

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Ter, 17 Abr 2012 5:56 pm
por DanielNN
O trecho que você postou aqui só falta a declaração da procedure e o "END;". Aparentemente esta parte está OK.
Verifique se está tudo certo, todos ";" nos lugares e os ENDs (END, END LOOP, END IF) corretos.

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Qui, 19 Abr 2012 12:04 pm
por analima.ilha
Agora estou com outro problema


Tenho essa procedure que busca todas as tabelas com esse inicio
e agora quero pegar alguns campos dessas tabelas e apagar eles...

tenho que fazer esse delete dentro dessa procedure pra apagar esses dados de todas essas tabelas...


alguma dica?

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Qui, 19 Abr 2012 1:29 pm
por DanielNN
Bem,
depois de você ter selecionado as tabelas que quer deletar as informações, basta montar um sql dinamico, ou seja, construir em texto o comando para deletar as tabelas:

Selecionar tudo

EXECUTE IMMEDIATE 'Delete from ' || cursor.tabela ;

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Qui, 19 Abr 2012 2:04 pm
por analima.ilha
No caso ficou assim

Selecionar tudo

stmt := NULL;
		stmt:= 'DELETE FROM ' ||  i.object_name || ' WHERE ID IN(' || chr(13)|| chr(10);
		stmt:=stmt || 'select COMMAND_CT.ID from ' ||  i.object_name || ' COMMAND_CT' || chr(13)|| chr(10);
		stmt:=stmt || ' inner join IPMP_NGN_EXECUTE_COMMAND_CT ' || chr(13)|| chr(10);
		stmt:=stmt || ' on( ' || chr(13)|| chr(10);
		stmt:=stmt || ' COMMAND_CT.EXECUTE_COMMAND_ID = IPMP_NGN_EXECUTE_COMMAND_CT.ID ' || chr(13)|| chr(10);
		stmt:=stmt || ' ) ' || chr(13)|| chr(10);
		stmt:=stmt || ' inner join IPMP_NGN_ELABOR_JOB_CT ' || chr(13)|| chr(10);
		stmt:=stmt || ' on( ' || chr(13)|| chr(10);
		stmt:=stmt || ' IPMP_NGN_EXECUTE_COMMAND_CT.ELABOR_JOB_ID = IPMP_NGN_ELABOR_JOB_CT.ID ' || chr(13)|| chr(10);
		stmt:=stmt || ' ) ' || chr(13)|| chr(10);
		stmt:=stmt || ' WHERE ' || chr(13)|| chr(10);
		stmt:=stmt || ' IPMP_NGN_ELABOR_JOB_CT.START_DATE < (SYSDATE - 15) ' || chr(13)|| chr(10);
		stmt:=stmt || ' ) ' || chr(13)|| chr(10);
		
		dbms_output.put_line(stmt);

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Qui, 19 Abr 2012 2:13 pm
por DanielNN
Quando for escrever uma mensagem, tem uma lista de botões acima da área do texto.
Tem um botão "Code"(dentre outros), que basta clicar lá após selecionar o código.

Querendo se aprofundar só dar uma olhada em "BB codes".

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Qui, 19 Abr 2012 2:21 pm
por analima.ilha
Esse EXECUTE IMMEDIATE tem que vim no inicio??


eu chamei ele no final.

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Qui, 19 Abr 2012 2:56 pm
por DanielNN
Exato, no início, antes de seu comando. Como postei anteriormente.

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Qui, 19 Abr 2012 3:03 pm
por analima.ilha
Obrigada pela ajuda =)

Re: Procedure que busca todas as tabelas com o mesmo inicio?

Enviado: Qui, 19 Abr 2012 3:25 pm
por DanielNN
De nada.
Ajudamos sempre que podemos. :)