प्रोसीजर की तरह, आप डेटाबेस में फंक्शन भी बना सकते हैं और उन्हें स्टोर कर सकते हैं।
सिंटैक्स
MySQL डेटाबेस में फंक्शन बनाने का सिंटैक्स निम्नलिखित है:
CREATE FUNCTION Function_Name(input_arguments) RETURNS output_parameter BEGIN declare variables; statements . . . . . . . . . . return data_type; END
उदाहरण
मान लें कि डेटाबेस में Emp नाम की एक टेबल है जिसकी सामग्री निम्नलिखित है:
+--------+------------+----------------+ | Name | DOB | Location | +--------+------------+----------------+ | Amit | 1970-01-08 | Hyderabad | | Sumith | 1970-01-08 | Vishakhapatnam | | Sudha | 1970-01-05 | Vijayawada | +--------+------------+----------------+
नीचे फंक्शन बनाने का एक उदाहरण दिया गया है। यहाँ, हम getDob() नाम का एक फंक्शन बना रहे हैं जो कर्मचारी का नाम स्वीकार करता है, DOB कॉलम का मान पुनर्प्राप्त करता है और लौटाता है।
CREATE FUNCTION getDob(emp_name VARCHAR(50)) RETURNS DATE BEGIN declare dateOfBirth DATE; select DOB into dateOfBirth from EMP where Name = emp_name; return dateOfBirth; END
JDBC का उपयोग करके फंक्शन कॉल करना
आप स्टोर्ड प्रोसीजर की तरह CallableStatement ऑब्जेक्ट का उपयोग करके फंक्शन को कॉल कर सकते हैं, JDBC प्रोग्राम का उपयोग करके फंक्शन को कॉल करने के लिए आपको:
डेटाबेस से कनेक्ट करें।
PreparedStatement ऑब्जेक्ट बनाएं और इसके कंस्ट्रक्टर को String प्रारूप में फंक्शन कॉल पास करें।
प्लेसहोल्डर पर मान सेट करें।
Callable स्टेटमेंट निष्पादित करें।
JDBC से फंक्शन कॉल करने का क्वेरी निम्नलिखित है:
{? = call getDob(?)}जैसा कि आप देख सकते हैं, क्वेरी में प्लेसहोल्डर (?) हैं, ठीक प्रीपेयर्ड और कालेबल स्टेटमेंट की तरह।
उपरोक्त क्वेरी में पहला प्लेसहोल्डर फंक्शन के रिटर्न मान को दर्शाता है और दूसरा प्लेसहोल्डर इनपुट पैरामीटर को दर्शाता है।
आपको उस प्लेसहोल्डर को रजिस्टर करना होगा जो रिटर्न मान को दर्शाता है, registerOutParameter() मेथड (CallableStatement इंटरफ़ेस का) का उपयोग करके आउटपुट पैरामीटर के रूप में। इस मेथड को आपको एक पूर्णांक मान पास करना होगा जो प्लेसहोल्डर की स्थिति को दर्शाता है और, पैरामीटर के SQL टाइप को दर्शाने वाला एक पूर्णांक वेरिएबल।
cstmt.registerOutParameter(1, Types.DATE);
setString() मेथड का उपयोग करके इनपुट पैरामीटर पर मान सेट करें। (चूंकि getDob() फंक्शन VARCHAR टाइप का मान स्वीकार करता है)।
उदाहरण
निम्नलिखित JDBC प्रोग्राम getDob फंक्शन को निष्पादित करता है और परिणाम पुनर्प्राप्त करता है:
import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Types; public class CallingFunctionsUsingCallable2 { 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 getDob(?)}"); cstmt.registerOutParameter(1, Types.DATE); cstmt.setString(2, "Amit"); cstmt.execute(); System.out.print("Date of birth: "+cstmt.getDate(1)); } }आउटपुट
Connection established...... Date of birth: 1970-01-08