2014-03-31 32 views
2

在我們的代碼中,我們使用spring StoredProcedure來執行存儲過程。我們的SP包含3個光標作爲輸出。在一種情況下,我們需要從所有三個遊標輸出,在另一種情況下,我們只需要一個遊標輸出,所以我們在StoredProcedure中構建如下。對於REF光標使用SqlOutParameter(String name,int sqlType)

if (case1) {// All cursors to be used 
declareParameter(new SqlOutParameter("OUTPUT1", OracleTypes.CURSOR, null, new SqlOutParamterExtension1())); 
declareParameter(new SqlOutParameter("OUTPUT2", OracleTypes.CURSOR, null, new SqlOutParamterExtension2())); 
declareParameter(new SqlOutParameter("OUTPUT3", OracleTypes.CURSOR, null, new SqlOutParamterExtension3())); 
} else{ // only one cursor used 
declareParameter(new SqlOutParameter("OUTPUT1", OracleTypes.CURSOR); 
declareParameter(new SqlOutParameter("OUTPUT2", OracleTypes.CURSOR, null, new SqlOutParamterExtension2())); 
declareParameter(new SqlOutParameter("OUTPUT3", OracleTypes.CURSOR); 
} 

這樣的聲明有什麼問題嗎? 我們的代碼在預生產環境中工作,但是我們在生產中(並非總是)出現'ORA 01001無效光標'錯誤,並且我們懷疑,如果此代碼與此問題有任何關係?

回答