স্টোরড প্রোসিজার-এর সুবিধাগুলো:
স্টোরড প্রোসিজার কম্পাইল হয়ে সংরক্ষিত থাকে, তাই কল করলে দ্রুত রেসপন্স দেয়।
প্রয়োজনীয় সকল SQL স্টেটমেন্ট একসাথে প্রোসিজারে গ্রুপ করে একবারে এক্সিকিউট করা যায়।
প্রোসিজার ডেটাবেস সার্ভারে থাকে যা ক্লায়েন্টের চেয়ে দ্রুত। জটিল কোয়েরি এখানে দ্রুত এক্সিকিউট হয়।
প্রোসিজার ব্যবহার করে কোড রিপিটেশন এড়ানো যায়, সাথে অতিরিক্ত SQL ফাংশনালিটি (যেমন স্টোরড ফাংশন কল) ব্যবহার করা যায়।
একবার কম্পাইল করলে যেকোনো সংখ্যক অ্যাপ্লিকেশন থেকে ব্যবহার করা যায়। পরিবর্তন প্রয়োজন হলে শুধু প্রোসিজার পরিবর্তন করলেই হয়, অ্যাপ্লিকেশন কোড ছুয়ে দিতে হয় না।
PL/SQL স্টোরড প্রোসিজার জাভা থেকে এবং জাভা স্টোরড প্রোসিজার PL/SQL থেকে কল করা যায়।
উদাহরণ
ধরি Employees নামক একটি টেবিল তৈরি করা হয়েছে নিচের বিবরণের সাথে:
+----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ | Name | varchar(255) | YES | | NULL | | | Salary | int(11) | NO | | NULL | | | Location | varchar(255) | YES | | NULL | | +----------+--------------+------+-----+---------+-------+
ধরি myProcedure নামক একটি প্রোসিজার আছে যা Employees টেবিলে ডেটা ইনসার্ট করে:
Create procedure myProcedure (IN name VARCHAR(30), IN sal INT, IN loc VARCHAR(45)) -> BEGIN -> INSERT INTO Employees(Name, Salary, Location) VALUES (name, sal, loc); -> END //
নিচের JDBC প্রোগ্রাম উপরের প্রোসিজার কল করে।
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Example {
public static void main(String args[]) throws SQLException {
// ড্রাইভার রেজিস্টার
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
// কানেকশন
String mysqlUrl = "jdbc:mysql://localhost/testdb";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
System.out.println("Connection established......");
// CallableStatement প্রস্তুত
CallableStatement cstmt = con.prepareCall("{call myProcedure(?, ?, ?)}");
cstmt.setString(1, "Amit");
cstmt.setInt(2, 3000);
cstmt.setString(3, "Hyderabad");
cstmt.execute();
cstmt.setString(1, "Kalyan");
cstmt.setInt(2, 4000);
cstmt.setString(3, "Vishakhapatnam");
cstmt.execute();
}
}
আউটপুট
Connection established......
Employees টেবিল যাচাই করলে নতুন দুটি রো দেখা যাবে:
+-----------+--------+----------------+ | Name | Salary | Location | +-----------+--------+----------------+ | Amit | 3000 | Hyderabad | | Kalyan | 4000 | Vishakhapatnam | +-----------+--------+----------------+