2017-10-20 16 views
0

変数に可能な複数の文字列値を割り当てようとしています。変数に格納される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です:式のタイプが間違っています。

+0

3つの文字列値のうちの1つをランダムに選択して変数に格納しますか?あるいは、論理的なパターンがありますか? – kfinity

+0

どうやってこれを使用しようとしていますか?値の1つを選択してそれを使用するか、文字列からデータ型をコレクションに変更して3つの値すべてを格納することができます。 – MT0

+0

OK、CASE式を入力すると、 'flag_one = 'SAMEDAY''この場合、' flag_one'に何を割り当てるべきですか? (どのようなCASE式の値をする必要がありますか?)それは "これ"または "それ"または "他の"それはできませんか?あなたがもっと条件を持っていなければ、そうではありません:IF "何か" "これ"、 "それ以外のもの"、 "それ"、それ以外のELSE – mathguy

答えて

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

のようなものを使用することができます。

関連する問題