Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

स्प्रिंग का उपयोग करके आउटपुट पैरामीटर के रूप में रेफ कर्सर के साथ संग्रहीत प्रक्रिया को कैसे कॉल करें?

यहाँ कुछ है जो मैंने एक साथ रखा है यह स्टैक ओवरफ्लो प्रश्न और वसंत के दस्तावेज़ :

आयात करें 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") 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे जांचें कि ओरेकल में इंडेक्स का उपयोग किया जा रहा है या नहीं

  2. किसी संग्रहीत कार्यविधि में तालिका को छोटा करना

  3. java.sql.SQLException:वाइल्डफ्लाई में अमान्य कॉलम इंडेक्स

  4. क्या Oracle विंडोज कमांड लाइन फंक्शन चला सकता है?

  5. JDBC द्वारा Oracle में निष्क्रिय सत्र