Entenda esse DECODE

Este forum é dedicado a códigos errados que se encontram por aí, ou seja, coisas que não se deve fazer de jeito nenhum! Não coloque neste forum dúvidas! (apenas situações bizarras do nosso dia a dia :-)
Responder
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

Um simples DECODE pra facilitar a vida do programador: (Package GL_CRM_UTILITIES_PKG )

Selecionar tudo

UPDATE gl_daily_rates_interface ri
 SET ERROR_CODE =
(SELECT DECODE
   (ct.ROWID,
    NULL, 'NONEXISTANT_CONVERSION_TYPE',
    DECODE
       (LEAST(TRUNC(ri2.to_conversion_date)
              - TRUNC(ri2.from_conversion_date),
              367),
        367, 'DATE_RANGE_TOO_LARGE',
        DECODE
           (LEAST(ri.conversion_rate, 0),
            ri.conversion_rate, 'NEGATIVE_CONVERSION_RATE',
            DECODE
               (LEAST
                    (NVL(ri.inverse_conversion_rate,
                         1),
                     0),
                ri.inverse_conversion_rate, 'NEGATIVE_INVERSE_RATE',
                DECODE
                   (from_curr.ROWID,
                    NULL, 'NONEXISTANT_FROM_CURRENCY',
                    DECODE
                       (from_curr.enabled_flag,
                        'N', 'DISABLED_FROM_CURRENCY',
                        -- Bug 4222440 JVARKEY Error the never enabled currency
                        'X', 'DISABLED_FROM_CURRENCY',
                        DECODE
                           (from_curr.currency_flag,
                            'N', 'STATISTICAL_FROM_CURRENCY',
                            DECODE
                               (from_curr.currency_code,
                                'STAT', 'STATISTICAL_FROM_CURRENCY',
                                DECODE
                                   (SIGN
                                       (TRUNC(SYSDATE)
                                        - NVL
                                            (TRUNC
                                                (from_curr.start_date_active),
                                             TRUNC
                                                (SYSDATE))),
                                    -1, 'OUT_OF_DATE_FROM_CURRENCY',
                                    DECODE
                                       (SIGN
                                           (TRUNC
                                               (SYSDATE)
                                            - NVL
                                                (TRUNC
                                                    (from_curr.end_date_active),
                                                 TRUNC
                                                    (SYSDATE))),
                                        1, 'OUT_OF_DATE_FROM_CURRENCY',
                                        DECODE
                                           (DECODE
                                               (from_curr.derive_type,
                                                'EMU', SIGN
                                                   (TRUNC
                                                       (from_curr.derive_effective)
                                                    - TRUNC
                                                        (ri2.to_conversion_date)),
                                                1),
                                            -1, 'EMU_FROM_CURRENCY',
                                            0, 'EMU_FROM_CURRENCY',
                                            DECODE
                                               (to_curr.ROWID,
                                                NULL, 'NONEXISTANT_TO_CURRENCY',
                                                DECODE
                                                   (to_curr.enabled_flag,
                                                    'N', 'DISABLED_TO_CURRENCY',
                                                    -- Bug 4222440 JVARKEY Error the never enabled currency
                                                    'X', 'DISABLED_TO_CURRENCY',
                                                    DECODE
                                                       (to_curr.currency_flag,
                                                        'N', 'STATISTICAL_TO_CURRENCY',
                                                        DECODE
                                                           (to_curr.currency_code,
                                                            'STAT', 'STATISTICAL_TO_CURRENCY',
                                                            DECODE
                                                               (SIGN
                                                                   (TRUNC
                                                                       (SYSDATE)
                                                                    - NVL
                                                                        (TRUNC
                                                                            (to_curr.start_date_active),
                                                                         TRUNC
                                                                            (SYSDATE))),
                                                                -1, 'OUT_OF_DATE_TO_CURRENCY',
                                                                DECODE
                                                                   (SIGN
                                                                       (TRUNC
                                                                           (SYSDATE)
                                                                        - NVL
                                                                            (TRUNC
                                                                                (to_curr.end_date_active),
                                                                             TRUNC
                                                                                (SYSDATE))),
                                                                    1, 'OUT_OF_DATE_TO_CURRENCY',
                                                                    DECODE
                                                                       (DECODE
                                                                           (to_curr.derive_type,
                                                                            'EMU', SIGN
                                                                               (TRUNC
                                                                                   (to_curr.derive_effective)
                                                                                - TRUNC
                                                                                    (ri2.to_conversion_date)),
                                                                            1),
                                                                        -1, 'EMU_TO_CURRENCY',
                                                                        0, 'EMU_TO_CURRENCY',
                                                                        ''))))))))))))))))))
           FROM gl_daily_rates_interface ri2,
                gl_daily_conversion_types ct,
                fnd_currencies from_curr,
                fnd_currencies to_curr
          WHERE ri2.ROWID = ri.ROWID
            AND ct.user_conversion_type(+) = ri2.user_conversion_type
            AND from_curr.currency_code(+) = ri2.from_currency
              AND to_curr.currency_code(+) = ri2.to_currency),
   ri.batch_number = DECODE(l_batch_number,null,-99999,ri.batch_number)
 WHERE ri.mode_flag IN('I', 'D', 'T', 'N')
 AND ri.batch_number is NULL;
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Esta é a famosa(recém-criada) eurística de condições aninhadas de Buzz Lightyear:
"Ao Infinito e Além".

No geral prefiro utilizar DECODE a CASE, achei até que já tinha feito alguns "grandes", mas NADA, NADA, NADA mesmo, comparado a este.
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

Noctifero escreveu:Esta é a famosa(recém-criada) eurística de condições aninhadas de Buzz Lightyear:
"Ao Infinito e Além"..
hooahoahoahoahoahaoa :lol: :lol:
Responder
  • Informação
  • Quem está online

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