[DICA]: ORDENANDO UM TYPE

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
ricards
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 52
Registrado em: Sáb, 29 Set 2007 12:59 am
Localização: Araraquara-SP
Contato:
Ricardo Neves
Analista e Instrutor Oracle Developer
Java Developer (JPA/JSF/Hibernate/WebServices/EJB)

AI VAI O SCRIPT PARA ORDENAR UM TYPE !

Selecionar tudo

DECLARE
    TYPE TYP_TAB_ARQUIVO_MCO IS RECORD(LETRA VARCHAR2(1));
    TYPE TAB_ARQUIVO_MCO IS TABLE OF TYP_TAB_ARQUIVO_MCO INDEX BY BINARY_INTEGER;
    --
    P_TAB_ARQUIVO_MCO       TAB_ARQUIVO_MCO;
    --
    V_TYPE_AUX              TYP_TAB_ARQUIVO_MCO;
BEGIN
    P_TAB_ARQUIVO_MCO(1).LETRA := 'Z';
    P_TAB_ARQUIVO_MCO(2).LETRA := 'A';
    P_TAB_ARQUIVO_MCO(3).LETRA := 'Y';
    P_TAB_ARQUIVO_MCO(4).LETRA := 'G';
    P_TAB_ARQUIVO_MCO(5).LETRA := 'W';
    P_TAB_ARQUIVO_MCO(6).LETRA := 'B';
    --
    DBMS_OUTPUT.PUT_LINE('* TYPE DESORDENADO * ');
    --
    FOR C_IND IN 1 .. P_TAB_ARQUIVO_MCO.COUNT LOOP
        DBMS_OUTPUT.PUT_LINE(P_TAB_ARQUIVO_MCO(C_IND).LETRA);
    END LOOP;
        --
    BEGIN
        --
        FOR V_IND_TP IN 1..P_TAB_ARQUIVO_MCO.COUNT LOOP
            FOR V_IND_TP_AUX IN 1..P_TAB_ARQUIVO_MCO.COUNT - V_IND_TP LOOP
                IF P_TAB_ARQUIVO_MCO(V_IND_TP_AUX + 1).LETRA < P_TAB_ARQUIVO_MCO(V_IND_TP_AUX).LETRA THEN
                     -- ORDERNANDO O TYPE
                     V_TYPE_AUX                          := P_TAB_ARQUIVO_MCO(V_IND_TP_AUX);
                     P_TAB_ARQUIVO_MCO(V_IND_TP_AUX)     := P_TAB_ARQUIVO_MCO(V_IND_TP_AUX + 1);
                     P_TAB_ARQUIVO_MCO(V_IND_TP_AUX + 1) := V_TYPE_AUX;    
                END IF;
            --    
            END LOOP;
        --
        END LOOP;    
   END;
   --
   DBMS_OUTPUT.PUT_LINE('* TYPE ORDENADO * ');
   --
   FOR C_IND IN 1 .. P_TAB_ARQUIVO_MCO.COUNT LOOP
       DBMS_OUTPUT.PUT_LINE(P_TAB_ARQUIVO_MCO(C_IND).LETRA);
   END LOOP;
END; 
Responder
  • Informação
  • Quem está online

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