Dans ON-ERROR, comment faire un go_block suivit execute_query ?
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
Code:
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; |
Merci