2011-07-20 60 views
0

我想用命名查詢調用PL/SQL函數。 其中一個參數會導致我出現問題。在PL/SQL定義中,它的類型是NUMBER。 下面是它設置的Java代碼: q.setParameter (Test.DISTRICT_ID_PARAM,districtId);districtIdLong當Oracle存儲函數的一個參數爲空時拋出異常

districtId不爲空,一切正常,但是當它是零,這是結果: org.hibernate.exception.SQLGrammarException: could not execute query

我敢肯定有各式各樣的管道沒有問題,因爲查詢效果很好,當districtId不爲空。

回答

0

我並不熟悉Java或Hibernate,但是在我寫的Oracle應用程序中,我遇到了類似於空參數(C#)的行爲 - 如果Java有這個概念,是否嘗試過設置參數值是DB null(在C#DBNull.Value中)?

如果該值爲空,我認爲Oracle將其解釋爲根本不傳遞參數。

+0

DB函數接受另外3個VARCHAR2類型的參數。我將它們設置爲與前一個相同,即使它們爲空,一切正常。我試圖找出的是NUMBER參數是否有不同之處。 –

+0

@RaduStoenescu:從PL/SQL參數傳遞的角度來看,傳遞null參數來輸入varchar2或number時沒有什麼區別。 – user272735

+0

@MarkWatts:如果您將具有空值的參數傳遞給PL/SQL函數,則該函數會看到該參數並且該參數的值爲空。 – user272735

相關問題