मैं वसंत के जेडीबीसी टेम्पलेट और स्टोर्डप्रोसेडर कक्षाओं का उपयोग कर रहा हूं। मुझे संग्रहीत प्रक्रिया वर्ग को मेरे लिए काम करने में परेशानी हो रही है।वसंत की संग्रहीत प्रक्रिया - प्रक्रिया से वापस आने वाले परिणाम हमेशा खाली
मेरे पास ऑरैकल डेटाबेस पर संग्रहीत प्रक्रिया है। उसके हस्ताक्षर
CREATE OR REPLACE PROCEDURE PRC_GET_USERS_BY_SECTION
(user_cursor OUT Pkg_Types.cursor_type
, section_option_in IN Varchar2
, section_in IN Varchar2) AS ....
वह जगह है जहाँ
TYPE cursor_type IS REF CURSOR;
मैं ओरेकल प्रक्रिया
private class MyStoredProcedure extends StoredProcedure
{
public MyStoredProcedure(JdbcTemplate argJdbcTemplate)
{
super(argJdbcTemplate, "PRC_GET_USERS_BY_SECTION");
declareParameter(new SqlOutParameter("output", OracleTypes.CURSOR));
declareParameter(new SqlParameter("input1", Types.VARCHAR));
declareParameter(new SqlParameter("input2", Types.VARCHAR));
compile();
}
public Map<String, Object> execute() {
Map<String, Object> inParams = new HashMap<String, Object>();
inParams.put("input1", "BG");
inParams.put("input2", "FE");
Map output = execute(inParams);
return output;
}
}
मैं से एक में एक विधि में इस बोल रहा हूँ से जानकारी प्राप्त करने के लिए निम्न संग्रहीत प्रक्रिया वर्ग बनाने मेरे डीएओ वर्ग
public List<String> getUserListFromProcedure() throws BatchManagerException
{
MyStoredProcedure sp = new MyStoredProcedure(this.jdbcTemplate);
Map<String, Object> result = new HashMap<String, Object>();
try
{
result = sp.execute();
}
catch(DataAccessException dae)
{
}
System.out.println(result.size());
return null;
}
हालांकि मानचित्र का आकार हमेशा 0 है, इसलिए कुछ भी वापस नहीं आता है। मुझे पता है कि डेटाबेस पर पंक्तियां हैं जो मेरे इनपुट मानदंड से मेल खाते हैं। इसके अलावा मेरे पास कोड काम था जो ऑरैकल संग्रहित प्रो के साथ बातचीत करने के लिए java.sql.CallableStatement
का उपयोग करता था - इसलिए proc अच्छी है। क्या स्प्रिंग की संग्रहीत प्रक्रिया के साथ OraceleTypes.CURSOR
मिश्रण करना गलत है? मैं और क्या उपयोग कर सकता हूँ? मैंने SqlReturnResultSet
भी कोशिश की और यह भी काम नहीं किया।
हाय, आपकी प्रतिक्रिया के लिए धन्यवाद। मुझे यह मेरी ओरेकल संग्रहीत प्रक्रिया के साथ काम कर रहा है। समस्या मेरे द्वारा घोषित आउटपुट पैरामीटर के साथ थी। निम्नलिखित काम करता है declareParameter (नई SqlOutParameter ("उत्पादन", oracle.jdbc.OracleTypes.CURSOR, नई RowMapper() {सार्वजनिक स्ट्रिंग mapRow (ResultSet argResults इंट argRowNum) फेंकता SQLException {वापसी argResults.getString (1);}})); यह अब मेरे लिए काम कर रहा है। धन्यवाद – aos
आपको अपने प्रश्न का उत्तर देना चाहिए था और इसे स्वीकृत उत्तर के रूप में चुना जाना चाहिए था। वैसे भी पोस्ट करने के लिए धन्यवाद। –