Stored Procedures হল SQL কোডের একটি সেট, যা ডেটাবেসে সংরক্ষিত থাকে এবং ডেটাবেসের মাধ্যমে কল করা যায়। এটি সাধারণত কোনো নির্দিষ্ট কাজ বা কর্মসূচি সম্পাদন করার জন্য ব্যবহৃত হয়, যেমন ডেটা ইনসার্ট, আপডেট, অথবা আরও জটিল লগিকাল অপারেশন।
Apache Derby-এ stored procedure তৈরি এবং ব্যবহার করা সম্ভব, যদিও এটি অন্যান্য ডেটাবেসের তুলনায় কিছুটা সীমিত। তবে আপনি SQL ব্লক এবং Java প্রোগ্রামিং ভাষা ব্যবহার করে stored procedures তৈরি করতে পারেন।
Apache Derby-এ Stored Procedure তৈরি করতে Java ব্যবহার করতে হয়, কারণ Derby SQL-এ শুধুমাত্র Java-based stored procedures সমর্থন করে। Java-based stored procedure একটি Java ক্লাস বা মেথড যা SQL কোয়েরি চালানোর মাধ্যমে ডেটাবেসে কার্যকর হয়।
ধরা যাক, আপনি একটি Stored Procedure তৈরি করতে চান যা একটি employee
টেবিলের মধ্যে id
এর ভিত্তিতে age
আপডেট করবে।
প্রথমে একটি Java ক্লাস তৈরি করুন যা stored procedure হিসেবে কাজ করবে। উদাহরণস্বরূপ, নিচের Java কোডে একটি মেথড তৈরি করা হয়েছে যা employee
টেবিলের age
আপডেট করবে।
import java.sql.*;
public class UpdateEmployeeAge {
public static void updateAge(Connection conn, int employeeId, int newAge) throws SQLException {
String sql = "UPDATE employee SET age = ? WHERE id = ?";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setInt(1, newAge);
stmt.setInt(2, employeeId);
stmt.executeUpdate();
}
}
}
এখন, আপনি Derby ডেটাবেসে UpdateEmployeeAge
ক্লাসের stored procedure তৈরি করতে পারেন। এটা করার জন্য আপনি java.sql.Connection
এবং CallableStatement
ব্যবহার করবেন।
-- Stored procedure তৈরি করা
CREATE PROCEDURE updateEmployeeAge(IN employeeId INT, IN newAge INT)
LANGUAGE JAVA
PARAMETER STYLE JAVA
DYNAMIC RESULT SETS 0
EXTERNAL NAME 'UpdateEmployeeAge.updateAge';
এটি updateEmployeeAge নামে একটি stored procedure তৈরি করবে, যা employeeId এবং newAge ইনপুট নেয় এবং employee
টেবিলের age
আপডেট করে।
Stored Procedure কল করতে CALL কমান্ড ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো, যেখানে আমরা updateEmployeeAge
স্টোরড প্রসিডিউর কল করছি:
-- Stored Procedure কল করা
CALL updateEmployeeAge(1, 35);
এই কমান্ডটি employee
টেবিলের id = 1
এর age
কলাম 35-এ আপডেট করবে।
এখন, আপনি JDBC ব্যবহার করে Java থেকে stored procedure
কল করতে পারেন।
import java.sql.*;
public class CallStoredProcedure {
public static void main(String[] args) {
String url = "jdbc:derby:myDB;create=true"; // ডেটাবেসের URL
try (Connection conn = DriverManager.getConnection(url)) {
// CallableStatement তৈরি করা
String sql = "{call updateEmployeeAge(?, ?)}";
try (CallableStatement stmt = conn.prepareCall(sql)) {
// ইনপুট প্যারামিটার সেট করা
stmt.setInt(1, 1); // employeeId
stmt.setInt(2, 35); // newAge
// Stored Procedure কল করা
stmt.executeUpdate();
System.out.println("Employee age updated successfully.");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
এই Java কোডটি JDBC ব্যবহার করে stored procedure কল করবে, এবং employeeId = 1
এর age
35-এ আপডেট করবে।
আপনি stored procedure-এর মাধ্যমে আউটপুটও ফেরত দিতে পারেন। যেমন, কোনো নির্দিষ্ট id
এর জন্য age
ফিরিয়ে দেওয়ার জন্য আপনি নিচের মতো একটি stored procedure তৈরি করতে পারেন:
public class GetEmployeeAge {
public static int getAge(Connection conn, int employeeId) throws SQLException {
String sql = "SELECT age FROM employee WHERE id = ?";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setInt(1, employeeId);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
return rs.getInt("age");
} else {
return -1; // If no employee found
}
}
}
}
CREATE PROCEDURE getEmployeeAge(IN employeeId INT, OUT employeeAge INT)
LANGUAGE JAVA
PARAMETER STYLE JAVA
DYNAMIC RESULT SETS 0
EXTERNAL NAME 'GetEmployeeAge.getAge';
-- Stored Procedure কল করা এবং আউটপুট নেয়া
CALL getEmployeeAge(1, ?);
common.read_more