आप CallableStatement इंटरफ़ेस का उपयोग करके SQL स्टोर्ड प्रोसीजर को कॉल कर सकते हैं। एक CallableStatement में इनपुट पैरामीटर, आउटपुट पैरामीटर, या दोनों हो सकते हैं।
आप Connection इंटरफ़ेस के prepareCall() मेथड का उपयोग करके CallableStatement (इंटरफ़ेस) का ऑब्जेक्ट बना सकते हैं। यह मेथड स्टोर्ड प्रोसीजर को कॉल करने के लिए क्वेरी को दर्शाने वाला एक स्ट्रिंग वेरिएबल स्वीकार करता है और एक CallableStatement ऑब्जेक्ट लौटाता है।
मान लें कि आपके पास डेटाबेस में myProcedure नाम का एक प्रोसीजर है, तो आप CallableStatement को इस तरह तैयार कर सकते हैं:
// CallableStatement तैयार करना CallableStatement cstmt = con.prepareCall("{call myProcedure(?, ?, ?)}");फिर आप CallableStatement इंटरफ़ेस के सेटर मेथड का उपयोग करके प्लेसहोल्डर पर मान सेट कर सकते हैं और execute() मेथड का उपयोग करके CallableStatement निष्पादित कर सकते हैं जैसा कि नीचे दिखाया गया है।
cstmt.setString(1, "Raghav"); cstmt.setInt(2, 3000); cstmt.setString(3, "Hyderabad"); cstmt.execute();
यदि प्रोसीजर के लिए कोई इनपुट मान नहीं हैं तो आप बस CallableStatement तैयार कर सकते हैं और इसे निष्पादित कर सकते हैं जैसा कि नीचे दिखाया गया है:
CallableStatement cstmt = con.prepareCall("{call myProcedure()}"); cstmt.execute();उदाहरण
मान लें कि MySQL डेटाबेस में Dispatches नाम की एक टेबल है जिसमें निम्नलिखित डेटा है:
+--------------+------------------+------------------+----------------+ | Product_Name | Date_Of_Dispatch | Time_Of_Dispatch | Location | +--------------+------------------+------------------+----------------+ | KeyBoard | 1970-01-19 | 08:51:36 | Hyderabad | | Earphones | 1970-01-19 | 05:54:28 | Vishakhapatnam | | Mouse | 1970-01-19 | 04:26:38 | Vijayawada | +--------------+------------------+------------------+----------------+
और अगर हमने myProcedure नाम का एक प्रोसीजर बनाया है जो इस टेबल से मान पुनर्प्राप्त करता है जैसा कि नीचे दिखाया गया है:
Create procedure myProcedure () -> BEGIN -> SELECT * FROM Dispatches; -> END //
उदाहरण
निम्नलिखित JDBC उदाहरण उपरोक्त स्टोर्ड प्रोसीजर को JDBC प्रोग्राम का उपयोग करके कॉल करता है।
import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; public class CallingProcedure { public static void main(String args[]) throws SQLException { // ड्राइवर रजिस्टर करना DriverManager.registerDriver(new com.mysql.jdbc.Driver()); // कनेक्शन प्राप्त करना String mysqlUrl = "jdbc:mysql://localhost/sampleDB"; Connection con = DriverManager.getConnection(mysqlUrl, "root", "password"); System.out.println("Connection established......"); // CallableStatement तैयार करना CallableStatement cstmt = con.prepareCall("{call myProcedure()}"); // परिणाम पुनर्प्राप्त करना ResultSet rs = cstmt.executeQuery(); while(rs.next()) { System.out.println("Product Name: "+rs.getString("Product_Name")); System.out.println("Date of Dispatch: "+rs.getDate("Date_Of_Dispatch")); System.out.println("Time of Dispatch: "+rs.getTime("Time_Of_Dispatch")); System.out.println("Location: "+rs.getString("Location")); System.out.println(); } } }आउटपुट
Connection established...... Product Name: KeyBoard Date of Dispatch: 1970-01-19 Time of Dispatch: 08:51:36 Location: Hyderabad Product Name: Earphones Date of Dispatch: 1970-01-19 Time of Dispatch: 05:54:28 Location: Vishakhapatnam Product Name: Mouse Date of Dispatch: 1970-01-19 Time of Dispatch: 04:26:38 Location: Vijayawada