यहाँ कुछ है जो मैंने एक साथ रखा है यह स्टैक ओवरफ्लो प्रश्न और वसंत के दस्तावेज़ए> :
आयात करें SqlOutParameter;import org.springframework.jdbc.core.SqlParameter;import org.springframework.jdbc.object.StoreedProcedure;पब्लिक क्लास सैंपलस्टोरेडप्रोसेडर, StoredProcedure का विस्तार करता है { public sampleStoredProcedure(DataSource dataSource) { super(dataSource, "PROC_NAME"); घोषणा पैरामीटर (नया SqlParameter ("param1", प्रकार। VARCHAR)); घोषणा पैरामीटर (नया SqlParameter ("param2", प्रकार। VARCHAR)); घोषित पैरामीटर (नया SqlOutParameter ("results_cursor", OracleTypes.CURSOR, नया SomeRowMapper ())); संकलन (); } सार्वजनिक मानचित्र<स्ट्रिंग, ऑब्जेक्ट> निष्पादित करें (स्ट्रिंग परम1, स्ट्रिंग परम 2) {मानचित्र<स्ट्रिंग, ऑब्जेक्ट> इनपरम्स =नया हैश मैप<>(); inParams.put("param1", param1); inParams.put("param2", param2); मानचित्र आउटपुट =निष्पादित करें (इनपरम्स); वापसी उत्पादन; }}
यदि आपकी संग्रहीत कार्यविधि किसी अन्य स्कीमा या पैकेज में है, तो आपको उपरोक्त में संग्रहीत कार्यविधि के नाम को समायोजित करने की आवश्यकता होगी। साथ ही, आपको SomeRowMapper
के स्थान पर उपयोग करने के लिए एक पंक्ति मैपर निर्दिष्ट करना होगा ।
इसे कॉल करने के लिए:
डेटा स्रोत डेटा स्रोत =...; // इसे कहीं से प्राप्त करें; मानचित्र <स्ट्रिंग, ऑब्जेक्ट> परिणाम =sp.execute ("कुछ स्ट्रिंग", "कुछ अन्य स्ट्रिंग"); // 'result' के साथ कुछ करें:विशेष रूप से, result.get("results_cursor") // लौटाई गई वस्तुओं की सूची होगी
वैकल्पिक रूप से, आप SimpleJdbcCall
. का उपयोग कर सकते हैं :
डेटा स्रोत डेटा स्रोत =...; // इसे कहीं से प्राप्त करें SimpleJdbcCall jdbcCall =new SimpleJdbcCall (डेटा स्रोत); नक्शा<स्ट्रिंग, ऑब्जेक्ट> परिणाम =jdbcCall.withProcedureName("PROC_NAME") .declareParameters(new SqlParameter("param1", Types.VARCHAR), new SqlParameter("param2", Types.VARCHAR), new SqlOutParameter("results_cursor", OracleTypes.CURSOR, new SomeRowMapper ())) .execute("some string", "some other string");
यदि संग्रहीत कार्यविधि किसी पैकेज में है, तो आपको एक पंक्ति जोड़नी होगी
.withCatalogName("PACKAGE_NAME")
jdbcCall
. के सेटअप के लिए . इसी तरह, अगर यह किसी भिन्न स्कीमा में है, तो आपको जोड़ना होगा
.withSchemaName("SCHEMA_NAME")