কম্পিউটার টিউটোরিয়াল

JDBC-তে কি Callable Statement ব্যবহার করে ফাংশন কল করা যায়? উদাহরণসহ ব্যাখ্যা।


প্রোসিজারের মতো ডেটাবেসে ফাংশনও তৈরি করে সংরক্ষণ করা যায়।

সিনট্যাক্স

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 অবজেক্ট তৈরি করুন এবং এর কনস্ট্রাক্টরে ফাংশন কল স্ট্রিং ফরম্যাটে পাস করুন।
  • প্লেসহোল্ডারগুলোর মান সেট করুন।
  • Callable statement এক্সিকিউট করুন।

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

  1. জাভাস্ক্রিপ্টে অ্যাসিনক্রোনাস ফাংশন উদাহরণসহ ব্যাখ্যা

  2. JDBC ব্যবহার করে ডেটাবেস থেকে ফাইল কীভাবে বের করবেন?

  3. পাইথনে factorplot ফাংশন দিয়ে ভায়োলিন প্লট ভিজ্যুয়ালাইজ করার পদ্ধতি

  4. পাইথনে SciPy ব্যবহার করে নেলডার-মিড অ্যালগরিদম কীভাবে বাস্তবায়ন করবেন?