2009-10-09 8 views

Répondre

5

Vous pouvez envoyer des messages d'erreur définis par l'utilisateur à partir du code PL/SQL. Les codes d'erreur compris entre -20000 et -20999 sont réservés aux messages d'erreur spécifiés par l'utilisateur.

vous le faites en appelant la fonction raise_application_error au sein de votre PL/SQL:

raise_application_error(-20001, 'Your error code message here'); 

Ce seront propagés comme des erreurs normales Oracle.

Edit:

Je ne suis pas un utilisateur de veille prolongée, mais je trouve cela tout en essayant de trouver une réponse et je pense qu'il vous mènera sur la bonne voie.

try 
{ 
    // some hibernate calls 
} 
catch (GenericJdbcException ge) 
{ 
    if(ge.getCause() != null && ge.getCause() instanceof SQLException) 
    { 
     SQLException se = (SQLException)ge.getCause(); 

     // ***************************************************************** 
     // NOTE: THIS will be where you check for your customer error code. 
     // ***************************************************************** 
     if(se.getErrorCode() == -20001) 
     { 
      // your error handling for this case 
     } 
     else 
     { 
      throw ge; // do not swallow unhandled exceptions 
     } 
    } 
    else 
    { 
     throw ge // do not swallow unhandled exceptions 
    } 
} 
+0

comment puis-je attraper cela en hibernation? – Egg

+1

'org.hibernate.exception.GenericJdbcException' est une exception d'hibernation (https://www.hibernate.org/hib_docs/v3/api/org/hibernate/exception/GenericJDBCException.html). Attrape-le. –

+0

beau travail RC, qui devrait être enuogh – Egg

0

vous pouvez utiliser le paramètre de sortie sur la pl/sql et prendre la sortie dans votre code à l'aide ParameterMode.OUT

procédure CREATE OR REPLACE proc (pls_out_put sur nombre);

// sortie appel

query.registerStoredProcedureParameter("pls_out_put", Integer.class, ParameterMode.OUT);` 

int résultat = (entier) query.getOutputParameterValue ("de pls_out_put");

if (result==1){ 
    message = new FacesMessage(FacesMessage.SEVERITY_INFO, "user defined message", "user defined message"); 

    FacesContext.getCurrentInstance().addMessage(null, message); 
    } else if(result==0) { 
     message = new FacesMessage(FacesMessage.SEVERITY_INFO, "User defined message", "user defined message"); 

     FacesContext.getCurrentInstance().addMessage(null, message); 
    } 
Questions connexes