Arrays

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
  

Mensagemem Qua, 22 Set 2004 10:27 am

estou com problemas na manipulação de arrays aqui, o que eu preciso é armazenar strings no array para depois buscar pelo índice o valor e passar numa consulta sql

aqui o código

Código: Selecionar todos
begin
   declare
      L_CDUSUA  CHAR(20)   := LTRIM('mrg');
      L_CDEMP   CHAR(2)    := '01';
      L_CDFIL   CHAR(4)    := '0002';
      L_MES     CHAR(2)    := '07';
      L_ANO     CHAR(4)    := '2004';
     
-- CRIA UM ARRAY COM ÍNDICES PARA TRABALHAR COM OS 7 VALORES POSSÍVEIS NAS DATAS NECESSÁRIAS

     TYPE CAMPOSTAB IS TABLE OF VARCHAR2(50) index by Binary_Integer;
     P1 CAMPOSTAB;
     J NUMBER(1) := 1;


-- ------------------------------Valores representativos dos Índices do Array
--******** 1 = Volumes(Cab)
--******** 2 = Volumes Kg
--******** 3 = Peso Médio
--******** 4 = Faturamento R$
--******** 5 = Faturamento Cab
--******** 6 = Quilos Equivalentes
--******** 7 = Preço Médio
-- --------------------------------------------------------------------------

EXCEPT_ERR  EXCEPTION;
 
BEGIN
   
   P1(1) := 'CPDITS.QTPRO';
   P1(2) := 'CPDITS.PSPRO';
   P1(3) := 'CPDITS.VLUNITPRO';
   
-- LOOP PARA PASSAR POR TODOS OS P1 ARMAZENADOS NO ARRAY
WHILE J <= 3 LOOP

-- Loop para valores no mês corrente   
   FOR CARGA IN(
     
    SELECT
        -- SELECIONA O CAMPO PASSADO NO ARRAY E O IDENTIFICADOR QUE É IGUAL AO ÍNDICE DO ARRAY
         (ADFSTPTIT.CDSTPTIT) CDSTPTIT, (MIN(ADFSTPTIT.DESTPTIT)) DESTPTIT,
         (SUM(P1(J))) VLMES, (MAX(J)) IDTPINF
      FROM
         CADPRO,
         CPDITS,
         CPDNFS,
         CPDVTS,
         ADFSTPTIT
      WHERE
         CADPRO.CDPRO = CPDITS.CDPRO AND
         CPDITS.CDEMP = CPDNFS.CDEMP AND
         CPDITS.CDFIL = CPDNFS.CDFIL AND
         CPDITS.NUDOC = CPDNFS.NUDOC AND
         CPDITS.CDSERIE = CPDNFS.CDSERIE AND
         CPDITS.CDSUBSERIE = CPDNFS.CDSUBSERIE AND
         CPDNFS.CDEMP = CPDVTS.CDEMP AND
         CPDNFS.CDFIL = CPDVTS.CDFIL AND
         CPDNFS.NUDOC = CPDVTS.NUDOC AND
         CPDNFS.CDSERIE = CPDVTS.CDSERIE AND
         CPDNFS.CDSUBSERIE = CPDVTS.CDSUBSERIE AND
         CPDVTS.CDEMP = ADFSTPTIT.CDEMP AND
         CPDVTS.CDFIL = ADFSTPTIT.CDFIL AND
         CPDVTS.CDTPTIT = ADFSTPTIT.CDTPTIT AND
         CPDVTS.CDSTPTIT = ADFSTPTIT.CDSTPTIT AND
       CADPRO.CDPRO IN (SELECT CDPRO FROM CADPRO WHERE TPESTRUT = '11' AND CDESTRUT LIKE '1%') AND
         CPDNFS.DTEMI = TO_DATE(L_MES||'/'||L_ANO,'MM/YYYY') AND
        ADFSTPTIT.CDEMP = L_CDEMP AND
        ADFSTPTIT.CDFIL = L_CDFIL
     GROUP  BY ADFSTPTIT.CDSTPTIT) LOOP
         
       -- INSERE RESULTADO DA VIEW EXPLÍCITA NA TABELA MTRZ221
       
        INSERT INTO MTRZ221 (CDSTPTIT, DESTPTIT, IDTPINF, VLMES, CDUSUA, CDEMP, CDFIL)
        VALUES(CARGA.CDSTPTIT, CARGA.DESTPTIT, CARGA.IDTPINF, CARGA.VLMES, L_CDUSUA, L_CDEMP, L_CDFIL);
    
     END LOOP;
    
     COMMIT;
   

commit;
EXCEPTION
when others then
    rollback;
    raise;
  END;
END;



se alguém puder me dar uma dica aí eu agradeço, tenter trabalhar com VARRAY mas não deu muito certo também, como se os índices não estivessem sendo carregados!!!


agradeço desde já....abraços
MuLtAnI
Localização: Videira - SC


Mensagemem Qua, 22 Set 2004 4:03 pm

Ola Multani

veja se isso não te ajuda:
http://glufke.net/oracle/viewtopic.php?t=61

[]s
dr_gori
Localização: Portland, OR USA

Thomas F. G

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

Mensagemem Qua, 22 Set 2004 4:12 pm

Na verdade não Glufke, o que acontece é o seguinte, se eu usar para o array armazenar valores to tipo da coluna da tabela por exemplo com tabela.coluna%type eu ainda assim não conseguiria fazer o que eu preciso, pois eu preciso passar o valor contido no índice do array para a instrução select o que não dá certo pois o meu array é do tipo VARCHAR2 e sendo assim eu estaria trazendo uma string e não os valores contidos em uma tabela ...

obrigado pela ajuda!!!

[]'s
MuLtAnI
Localização: Videira - SC



  • Veja também
    Respostas
    ExibiÇões
    Última mensagem


Voltar para PL/SQL

Quem está online

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