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

MySQL-এ স্টোরড প্রসিডিউর থেকে টেবিলের সব রেকর্ড দেখানো

স্টোরড প্রসিডিউরের ভেতরে `SELECT` স্টেটমেন্ট রাখলে প্রসিডিউর কল করলে সেটি রেজাল্ট সেট রিটার্ন করে। এটি অ্যাপ্লিকেশন লেয়ারে একই কোয়েরি বারবার লিখতে হবে না।

টেবিল ও ডেটা তৈরি

mysql> CREATE TABLE DemoTable1933 (ClientName VARCHAR(20));

mysql> INSERT INTO DemoTable1933 VALUES
    ('Chris Brown'), ('David Miller'), ('Adam Smith'), ('John Doe');

স্টোরড প্রসিডিউর তৈরি

mysql> DELIMITER //
mysql> CREATE PROCEDURE display_all_records()
    BEGIN
        SELECT * FROM DemoTable1933;
    END //
mysql> DELIMITER ;

প্রসিডিউর কল করা

mysql> CALL display_all_records();

আউটপুট:

+--------------+
| ClientName   |
+--------------+
| Chris Brown  |
| David Miller |
| Adam Smith   |
| John Doe     |
+--------------+
4 rows in set (0.00 sec)

প্রসিডিউর ড্রপ/মডিফাই

DROP PROCEDURE IF EXISTS display_all_records;

প্যারামিটার সহ প্রসিডিউর (বিকল্প)

CREATE PROCEDURE get_clients_by_name(IN name_prefix VARCHAR(20))
BEGIN
    SELECT * FROM DemoTable1933 WHERE ClientName LIKE CONCAT(name_prefix, '%');
END;

সুবিধা

  • লজিক ডাটাবেস লেয়ারে ক্যাপসুলেটেড থাকে।
  • নিরাপত্তা: টেবিলে ডায়রেক্ট এক্সেস না দিয়ে প্রসিডিউর দিয়ে এক্সেস দেয়া যায়।
  • রিঅюзаবিলিটি: একাধিক অ্যাপ্লিকেশন থেকে কল করা যায়।

সতর্কতা

  • প্রসিডিউর ডিবাগ করা কঠিন।
  • অতিরিক্ত লজিক (লুপ, কার্সর) পারফরম্যান্স কমাতে পারে।
  • ভার্সন কন্ট্রোল এবং ডিপ্লয়মেন্ট ম্যানেজমেন্ট জটিল।
  1. MySQL-এ RAND() এবং LIMIT দিয়ে র‍্যান্ডম রো বের করা

  2. MySQL স্টোরড প্রসিডিউরে শর্তসাপেক্ষ UPDATE (WHERE ক্লজ সহ)

  3. MySQL স্টোরড প্রসিডিউরে ডেটা ইনসার্ট করা

  4. MySQL স্টোরড প্রোসিডিউরে SHOW CREATE TABLE এক্সিকিউট করা