কম্পিউটার

কিভাবে আমরা MySQL হ্যান্ডলার লিখতে পারি, একটি সংরক্ষিত পদ্ধতিতে, যা একটি ত্রুটি বার্তা ছুড়ে দেয় এবং মৃত্যুদন্ড থেকে প্রস্থান করে?


যেহেতু আমরা জানি যে যখনই MySQL সঞ্চিত পদ্ধতিতে একটি ব্যতিক্রম ঘটেছে, সঠিক ত্রুটি বার্তা ছুঁড়ে এটি পরিচালনা করা খুবই গুরুত্বপূর্ণ কারণ যদি আমরা ব্যতিক্রমটি পরিচালনা না করি, তাহলে একটি সংরক্ষিত পদ্ধতিতে সেই নির্দিষ্ট ব্যতিক্রমের সাথে অ্যাপ্লিকেশন ব্যর্থ হওয়ার সুযোগ থাকবে। . MySQL একটি হ্যান্ডলার প্রদান করে যা একটি ত্রুটি বার্তা ছুঁড়ে দেয় এবং এক্সিকিউশন থেকে প্রস্থান করে। এটি প্রদর্শন করার জন্য, আমরা নিম্নলিখিত উদাহরণটি ব্যবহার করছি যেখানে আমরা একটি প্রাথমিক কী কলামে একটি ডুপ্লিকেট মান সন্নিবেশ করার চেষ্টা করছি৷

উদাহরণ

mysql> Delimiter //
mysql> Create Procedure Insert_Studentdetails3(S_Studentid INT, S_StudentName Varchar(20), S_Address Varchar(20))
    -> BEGIN
    -> DECLARE EXIT HANDLER FOR SQLEXCEPTION SELECT 'Got an error';
    -> INSERT INTO Student_detail
    -> (Studentid, StudentName, Address)
    -> Values(S_Studentid,S_StudentName,S_Address);
    -> Select * from Student_detail;
    -> END //
Query OK, 0 rows affected (0.00 sec)

mysql> Delimiter ;
mysql> CALL Insert_Studentdetails3(105, 'Mohan', 'Chandigarh');
+-----------+-------------+------------+
| Studentid | StudentName | address    |
+-----------+-------------+------------+
|       100 | Gaurav      | Delhi      |
|       101 | Raman       | Shimla     |
|       103 | Rahul       | Jaipur     |
|       104 | Ram         | Chandigarh |
|       105 | Mohan       | Chandigarh |
+-----------+-------------+------------+
5 rows in set (0.04 sec)
Query OK, 0 rows affected (0.06 sec)

এখন, যদি আমরা কলাম 'studentid'-এর কোনো ডুপ্লিকেট মান যোগ করার চেষ্টা করি তাহলে এটি এক্সিকিউশন থেকে বেরিয়ে যাবে, এটি 'select * from student_detail' পদ্ধতিতে লেখা কোয়েরির ফলাফল সেট দেয়নি এবং শুধুমাত্র ত্রুটি বার্তা দেয় 'গট' একটি ত্রুটি'।

mysql> CALL Insert_Studentdetails3(105, 'Sohan', 'Bhopal');
+--------------+
| Got an error |
+--------------+
| Got an error |
+--------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

  1. ফ্যাক্টরিয়াল গণনা করার জন্য আমরা কিভাবে MySQL সঞ্চিত পদ্ধতি তৈরি করতে পারি?

  2. আমি কিভাবে একটি MySQL সঞ্চিত ফাংশন লিখতে পারি যা একটি প্রদত্ত সংখ্যার ফ্যাক্টরিয়াল গণনা করে?

  3. কিভাবে একটি MySQL সঞ্চিত ফাংশন লিখতে হয় যা একটি টেবিলের মান আপডেট করে?

  4. কিভাবে সংরক্ষিত পদ্ধতিতে IF ব্যবহার করবেন এবং MySQL এ নির্বাচন করবেন?