多个字符串到变量

时间:2017-10-20 19:41:59

标签: sql oracle plsql

我正在尝试为变量分配多个字符串值。它可以是存储在变量中的3个值中的任何一个(不超过1但可以是3中的任何一个)。 我在存储过程中有以下CASE,如下所示: -

flag_one := 
            CASE 
            WHEN flag_one = 'ACH' THEN 'ACHPayment_Confirmed'
            **WHEN flag_one = 'SAMEDAY' THEN 'HIFV5_FTRINF' OR 'HIFV4' OR 'Payment_HIFV5_FTRINF'**
            WHEN flag_one = 'LBX' THEN   'LOCKBOX_CONFIRM'
            WHEN flag_one = 'ELBX' THEN 'eLockbox_Confirmed'
            WHEN flag_one = 'EBPP' THEN 'Transactis_Confirmed'
            WHEN flag_one = 'RDC' THEN 'RDC_Confirmed'
            --ELSE NULL
            END;

这样做的好方法是什么?收到的编译错误是PLS-00382:表达式类型错误。

1 个答案:

答案 0 :(得分:0)

您可以使用类似

的内容
random_val := DBMS_RANDOM.VALUE;

flag_one := CASE flag_one
              WHEN 'ACH' THEN 'ACHPayment_Confirmed'
              WHEN 'SAMEDAY' THEN
                CASE
                  WHEN random_val BETWEEN 0 AND 0.3333333333
                    THEN 'HIFV5_FTRINF'
                  WHEN random_val BETWEEN 0.333333333 AND 0.6666666666
                    THEN 'HIFV4'
                  ELSE 'Payment_HIFV5_FTRINF'
                END
        WHEN 'LBX' THEN   'LOCKBOX_CONFIRM'
        WHEN 'ELBX' THEN 'eLockbox_Confirmed'
        WHEN 'EBPP' THEN 'Transactis_Confirmed'
        WHEN 'RDC' THEN 'RDC_Confirmed'
        --ELSE NULL
        END;

SQLFiddle here

祝你好运。