Mybatis呼叫儲存過程出現NullPointerException錯誤
今天在寫程式碼,用MyBatis呼叫Oracle儲存過程,總是丟擲下面的異常。
Caused by: java.lang.NullPointerException
at oracle.jdbc.driver.T4C8Oall.getNumRows(T4C8Oall.java:870)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:960)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3390)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4223)
at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:168)
因為之前做過調查,但當時呼叫的是一個輸出引數的儲存過程。
最後發現,在MyBatis傳送儲存過程給oracle時,對格式不做任何改動!
而oracle對傳送的格式有要求的。
如下格式,Oracle 會報錯!
{
call EXT_XXX(?,?,?)
}
如果寫成一行的話,就沒問題了!
{call EXT_XXX(?,?,?)}