2010-11-18 10 views
1

İlkbaharda (hazırda bekletme) kullanarak oracle saklı yordamı çağırmam gerekiyor.spring & plsql saklı yordam - istisna işleme ve işlemler

PL/SQL ile aşina değilim, bu yüzden nasıl devam edeceğini bilmek istiyorum.

1) İşlemi başlatmak/kapatmak için yay/hazırda bekletme (örneğin ek açıklamalar) kullanabilir miyim? Bunun bir sorun olmadığını ve saklı yordamın içinde başlamak/kapatmak zorunda olmadığımı kabul ediyorum.

2) belirtilen prosedürde ben açıp imleci kapanış ama istisna durumunda bunu kapatmak ve Java kısmına istisna rethrow istiyorum değilim, bu yüzden burada yaptığım budur:

EXCEPTION 
    WHEN OTHERS THEN 
    CLOSE my_cursor; 
    RAISE e_cannot_do_sth; 

Kullanıcıya bir şeylerin yanlış gittiğini bildirmek için bir istisna oluşturmak istiyorum ...

Bunu yapmanın en iyi yolu nedir?

cevap

1
  1. Evet, işlemleri kullanabilmek için Spring'i kullanabilirsiniz. Hibernate'in size burada bir avantaj sağlayacağını sanmıyorum.

  2. ardından bir istisna kullanmak için: errno -20000 ve -20999 arasında bir sayıdır

    raise_application_error(errno, 'Error Message of your choice');

. Ardından Java kodunda, aşağıdaki gibi kök SQLExcection çekin, org.springframework.jdbc.UncategorizedSQLException yakalamak:

private SQLException digOutSqlException(UncategorizedSQLException t) { 
    Throwable root = t; 
    while (root.getCause() instanceof SQLException) { 
    return (SQLException)root.getCause(); 
    } 
    return null; 
} 

Ve özel hata PL/SQL hata numarası almak için SQLException üzerinde getErrorCode() arayın.