Bonjour,
Dans ON-ERROR, comment faire un go_block suivit execute_query.
Je possède un écran Master-detail
Sur le block detail une clause order by est défini dans la priopriété ORDER BY du block.
La propriété ORDER_BY fait référence à une fonction qui retourne une valeur.
Deux paramètres sont fournit à cette fonction, l'ID du block maitre et l'id du block detail.
Plutot que de tester la fonction recevant les 2 id comme paramètres.
On me de mande de catcher l'erreur FRM-40505 Unable to perform query.
Si l'erreur survient je dois relancer la requete du block detail avec la clause order by à NULL.
Dans tout les autres cas la clause ORDER BY doit référencer la fonction.
J'ai surchargé l'event ON-ERROR dans le block detail comme ceci. Cependant GO_BLOCK et EXECUTE_QUERY ne fonctionne pas dans le ON-ERROR
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 DECLARE v_error NUMBER := ERROR_CODE; v_type VARCHAR2(3) := ERROR_TYPE; v_text VARCHAR2(80) := ERROR_TEXT; BEGIN IF v_type = 'FRM' AND v_error = 40505 THEN CANCEL_QUERY; SET_BLOCK_PROPERTY('TRA', ORDER_BY, ''); GO_BLOCK('TRA'); EXECUTE_QUERY; ELSE Message(v_type||'-'||to_char(v_error)||': '||v_text); RAISE Form_Trigger_Failure; END IF; END;
Partager