J'ai le cas suivant dans 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 compile une amende, mais lorsque j'exécute à stocker, je reçois l'erreur suivante:
Ora-06592: cas introuvable lors de l'exécution de la déclaration de cas
Donc quand je supplie le cas; Le processus stocké ne compilera pas. Les seuls exemples que je peux mettre mes mains sur mes mains, utilise le cas dans une instruction SELECT, je ne veux pas l'utiliser dans Sélectionner une instruction, je souhaite définir ma variable sans avoir de tas de désignations.
Si vous utilisez une instruction CASE
- les annonces sous le CASE
- doivent correspondre à toutes les conditions que vous pourriez rencontrer - soit explicitement comme vous l'avez fait en utilisant
WHEN v_line_item.custom_segment = 'CND1' THEN
v_current_col := v_col_lcy_tps;
WHEN v_line_item.custom_segment = 'CND2' THEN
ou en utilisant la clause ELSE
.
Votre code frappe une situation où v_line_item.custom_segment
ne correspond pas à aucun des scénarios CASE
[$ var], d'où Oracle augmente cette exception.
Vous pourriez ajouter une prise de capture-tout
ELSE
-- do some work here, raise an exception or log it.
afin qu'il correspond à toutes les conditions.
En plus de lecture: