Array

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Kiki
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Qui, 15 Mar 2007 5:14 pm
Localização: Rio de Janeiro

Pessoal,

Tenho uma tabela temporaria com itens que ainda não foram cadastrados na minha tabela de produtos. Preciso enviar um erro no log avisando TODOS os itens que estao faltando. Como o faço?

Eu sei que da maneira abaixo não estah correta (ate porque não estou usando um array). Mas o que eu desejava era colocar no "faltantes" (que seria um array e não um varchar) todos os produtos q existem na minha tabela temporaria. Depois disso, eu verificaria se o array é vazio e, caso não fosse, incluiria no log quais os produtos que devem ser inseridos na tabela de produtos.

Selecionar tudo

DECLARE 
    faltantes            varchar2(10);
    sql_statement    varchar2(2000);
BEGIN
    dbms_output.enable(1000000);

    begin
        select 
               produtos  
        into 
            faltantes
        from 
            CVSL_APLICACOES_FALTANTES fil;
     end;
end;

alguém pode me dar uma luz?

bj,
kiki
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Kiki, bom dia.
Tudo bem?

Existem na verdade N formas de se fazer, como: TEMP TABLE, PL/SQL TABLE etc.
Eu, particularmente sou fã da segunda opção, onde você poderia criar uma função, que retorna um TABLE, com os itens faltantes.

Dá uma olhada, neste tópico interessante do Dr Gori:

http://www.glufke.net/oracle/viewtopic. ... t=index+by

qualquer coisa, manda ai.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Já que os itens estão numa temporária, eu faria da seguinte forma:
* Criaria um SQL que mostra todos os que faltam.
Depois, colocaria esse SQL num cursor e tratava cada item individualmente.

Não sei se você quer inserir um por um numa tabela, ou quer criar um STRING contendo todos que faltam lado a lado e jogar num LOG... Seja qual for a resposta, faria dessa forma. Sem envolver arrays e coisas assim.
Kiki
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Qui, 15 Mar 2007 5:14 pm
Localização: Rio de Janeiro

Ok, eu acabei conseguindo fazer um cursor q pega todos os meus carinhas...

Mas como os imprimo no log?
tentei usar:

Selecionar tudo

DBMS_OUTPUT.PUT_LINE (TO_CHAR (a));
--> Nada foi colocado no log (apenas aparece como se tivesse finalizado com sucesso);

Selecionar tudo

RAISE_APPLICATION_ERROR(-20002,'Os seguintes itens estão faltando ' ||to_char(a));
--> Esse caso é melhor do que o anterior. Mas aparece só o 1º item do cursor;
Como eu consigo fazer com que dê erro mas mostre todos os caras?

Bjos,
Kiki
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Selecionar tudo

DBMS_OUTPUT.PUT_LINE (TO_CHAR (a));
--> Nada foi colocado no log (apenas aparece como se tivesse finalizado com sucesso);
Pra obter a saída com DBMS_OUTPUT você deve antes digitar:

Selecionar tudo

SQL> SET SERVEROUTPUT ON
SQL> 
:-o
Kiki
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Qui, 15 Mar 2007 5:14 pm
Localização: Rio de Janeiro

Serio, eu T AMOOOO!!!!

Obrigadaaa!!! =D
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 19 visitantes