Pourquoi est-ce que je reçois ORA-06592: CASE introuvable lors de l'exécution de l'instruction CASE en PL / SQL?
J'ai le CAS suivant en PL/SQL
CASE
WHEN v_line_item.custom_segment = 'CND1' THEN
v_current_col := v_col_lcy_tps;
WHEN v_line_item.custom_segment = 'CND2' THEN
v_current_col := v_col_lcy_ib;
WHEN v_line_item.custom_segment = 'CND3' THEN
v_current_col := v_col_lcy_gm;
WHEN v_line_item.custom_segment = 'CND4' THEN
v_current_col := v_col_lcy_pb;
WHEN v_line_item.custom_segment = 'CND5' THEN
v_current_col := v_col_lcy_bb;
END CASE;
Le code se compile bien, mais quand je l'execute stored proc j'obtiens l'erreur suivante:
ORA-06592: CAS introuvable lors de l'exécution de CAS de déclaration
Alors quand j'ai enlever le CAS; la procédure stockée ne compile pas. Les seuls Exemples que je peux obtenir mes mains sur, utilise dans le CAS d'une instruction select, je ne veux pas l'utiliser dans une instruction select, je veux mettre ma variable sans avoir un tas de if then ELSE.
source d'informationauteur Marthinus
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez un
CASE
déclaration - les listes en vertu de laCASE
- doit correspondre à toutes les conditions que vous pourriez rencontrer, soit de manière explicite comme vous l'avez fait en utilisantou à l'aide de la
ELSE
clause.Votre code est de frapper une situation où
v_line_item.custom_segment
ne correspond à aucune donnéeCASE
scénarios, d'où Oracle soulève cette exception.Vous pouvez ajouter un fourre-tout de la condition
afin qu'il corresponde à toutes les conditions.
Pour en savoir plus:
Vieux thread, je sais, mais ne serait-il pas l'écrire comme ça?
C'est plus concis et lisible et il ne vous donnera pas un ORA-06592 erreur.