কম্পিউটার

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


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

mysql> DELIMITER //
mysql> Create Procedure Insert_Studentdetails2(S_Studentid INT, S_StudentName Varchar(20), S_Address Varchar(20),OUT got_error INT)
    -> BEGIN
    -> DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET got_error=1;
    -> 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_Studentdetails2(104,'Ram',‘Chandigarh',@got_error);
+-----------+-------------+------------+
| Studentid | StudentName | address    |
+-----------+-------------+------------+
| 100       | Gaurav      | Delhi      |
| 101       | Raman       | Shimla     |
| 103       | Rahul       | Jaipur     |
| 104       | Ram         | Chandigarh |
+-----------+-------------+------------+
4 rows in set (0.04 sec)
Query OK, 0 rows affected (0.06 sec)

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

mysql> CALL Insert_Studentdetails2(104,'Shyam','Hisar',@got_error);
+-----------+-------------+------------+
| Studentid | StudentName | address    |
+-----------+-------------+------------+
| 100       | Gaurav      | Delhi      |
| 101       | Raman       | Shimla     |
| 103       | Rahul       | Jaipur     |
| 104       | Ram         | Chandigarh |
+-----------+-------------+------------+
4 rows in set (0.00 sec)
Query OK, 0 rows affected (0.03 sec)

mysql> Select @got_error;
+------------+
| @got_error |
+------------+
| 1          |
+------------+
1 row in set (0.00 sec)

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

  2. কিভাবে আমরা একটি নির্দিষ্ট MySQL ডাটাবেসে সংরক্ষিত ভিউ তালিকা দেখতে পারি?

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

  4. রেকর্ড আপডেট করার সময় পরিবর্তন করার জন্য একটি MySQL সঞ্চিত পদ্ধতিতে পরিবর্তনশীল মান কিভাবে এড়াতে পারি?