प्रक्रियाओं की तरह, आप डेटाबेस में फ़ंक्शन भी बना सकते हैं और उन्हें स्टोर कर सकते हैं।
वाक्यविन्यास
(MySQL) डेटाबेस में फ़ंक्शन बनाने का सिंटैक्स निम्नलिखित है:
FUNCTION बनाएं Function_Name(input_arguments) रिटर्न्स output_parameterBEGIN वैरिएबल घोषित करें; बयान। . . . . . . . . . डेटा_टाइप लौटाएं; END
उदाहरण
मान लीजिए हमारे पास Emp . नाम की एक टेबल है डेटाबेस में निम्नलिखित सामग्री के साथ:
<पूर्व>+----------+---------------+----------------+| नाम | जन्म तिथि | स्थान |+--------+---------------+----------------+| अमित | 1970-01-08 | हैदराबाद || सुमित | 1970-01-08 | विशाखापत्तनम || सुधा | 1970-01-05 | विजयवाड़ा |+--------+---------------+----------------+नीचे दिया गया एक फ़ंक्शन बनाने का एक उदाहरण है। यहां, हम getDob() . नाम से एक फंक्शन बना रहे हैं जो कर्मचारी के नाम को स्वीकार करता है, जन्मतिथि कॉलम का मूल्य प्राप्त करता है और लौटाता है।
CREATE FUNCTION getDob(emp_name VARCHAR(50)) RETURN DATEBEGINडिक्लेयर डेटऑफ़ बर्थ डेट; EMP से डेटऑफ़बर्थ में DOB चुनें, जहां Name =emp_name;रिटर्न डेटऑफ़बर्थ;END
JDBC का उपयोग करके किसी फ़ंक्शन को कॉल करना
आप CallableStatement . का उपयोग करके किसी फ़ंक्शन को कॉल कर सकते हैं ऑब्जेक्ट को संग्रहीत कार्यविधियों की तरह, JDBC प्रोग्राम का उपयोग करके किसी फ़ंक्शन को कॉल करने के लिए जिसकी आपको आवश्यकता है।
-
डेटाबेस से कनेक्ट करें।
-
एक तैयार विवरण बनाएं ऑब्जेक्ट और उसके कंस्ट्रक्टर को फंक्शन कॉल को स्ट्रिंग फॉर्मेट में पास करें।
-
प्लेस होल्डर्स के लिए मान सेट करें।
-
कॉल करने योग्य कथन निष्पादित करें।
JDBC से किसी फ़ंक्शन को कॉल करने के लिए क्वेरी निम्नलिखित है:
<पूर्व>{? =कॉल गेटडॉब(?)}जैसा कि आप देखते हैं कि क्वेरी में तैयार और कॉल करने योग्य बयानों की तरह प्लेसहोल्डर (?) शामिल हैं।
उपरोक्त क्वेरी में पहला स्थान धारक फ़ंक्शन के रिटर्न मान का प्रतिनिधित्व करता है और दूसरा प्लेसहोल्डर इनपुट पैरामीटर का प्रतिनिधित्व करता है।
आपको registerOutParameter() का उपयोग करके आउटपुट पैरामीटर के रूप में रिटर्न वैल्यू का प्रतिनिधित्व करने वाले प्लेस होल्डर को पंजीकृत करने की आवश्यकता है विधि (कॉल करने योग्य स्टेटमेंट इंटरफ़ेस)। इस विधि के लिए आपको प्लेस होल्डर की स्थिति का प्रतिनिधित्व करने वाला एक पूर्णांक मान और sql प्रकार (पैरामीटर के) का प्रतिनिधित्व करने वाला एक पूर्णांक चर पारित करने की आवश्यकता है
cstmt.registerOutParameter(1, Types.DATE);
सेटस्ट्रिंग () विधि का उपयोग करके मान को इनपुट पैरामीटर पर सेट करें। (चूंकि getDoc() फ़ंक्शन VARCHAR प्रकार के मान को स्वीकार करता है)।
उदाहरण
निम्नलिखित JDBC प्रोग्राम getDob फंक्शन निष्पादित करता है और परिणाम पुनः प्राप्त करता है:
आयात करें ]) SQLException फेंकता है {// ड्राइवर DriverManager.registerDriver को पंजीकृत करना (नया com.mysql.jdbc.Driver ()); // कनेक्शन प्राप्त करना स्ट्रिंग mysqlUrl ="jdbc:mysql://localhost/sampleDB"; कनेक्शन कॉन =DriverManager.getConnection (mysqlUrl, "रूट", "पासवर्ड"); System.out.println ("कनेक्शन स्थापित ......"); // कॉल करने योग्य स्टेटमेंट तैयार करना कॉल करने योग्य स्टेटमेंट cstmt =con.prepareCall ("{? =कॉल getDob (?)}"); cstmt.registerOutParameter(1, Types.DATE); cstmt.setString(2, "अमित"); cstmt.execute (); System.out.print ("जन्म तिथि:" + cstmt.getDate(1)); }}पूर्व>आउटपुट
कनेक्शन स्थापित हो गया......जन्म तिथि:1970-01-08