MySQL में स्टोर्ड प्रोसीजर के अंदर UPDATE और WHERE क्लॉज का उपयोग करके शर्त के आधार पर रिकॉर्ड अपडेट किए जा सकते हैं।
सिंटैक्स
DELIMITER //
CREATE PROCEDURE procedure_name(IN param1 TYPE, IN param2 TYPE)
BEGIN
UPDATE table_name
SET col1 = param1, col2 = param2
WHERE condition;
END //
DELIMITER ;
उदाहरण
तालिका बनाएं और डेटा डालें:
mysql> CREATE TABLE DemoTable (Id INT, FirstName VARCHAR(20), LastName VARCHAR(20));
mysql> INSERT INTO DemoTable VALUES (101, 'David', 'Brown'), (102, 'Chris', 'Brown'), (103, 'John', 'Doe');
स्टोर्ड प्रोसीजर बनाएं
mysql> DELIMITER //
mysql> CREATE PROCEDURE update_sp(IN fName VARCHAR(20), IN lName VARCHAR(20))
-> BEGIN
-> UPDATE DemoTable
-> SET FirstName = fName, LastName = lName
-> WHERE Id = 101;
-> END //
mysql>> DELIMITER ;
प्रोसीजर कॉल करें
mysql> CALL update_sp('Adam', 'Smith');
परिणाम
+------+-----------+----------+
| Id | FirstName | LastName |
+------+-----------+----------+
| 101 | Adam | Smith |
| 102 | Chris | Brown |
| 103 | John | Doe |
+------+-----------+----------+
महत्वपूर्ण बिंदु
- पैरामीटर
INमोड (डिफ़ॉल्ट) में पास किए जाते हैं WHEREक्लॉज निर्धारित करता है कि कौन सी पंक्तियां अपडेट होंगी- प्रोसीजर पैरामीटर को सीधे
SETमें उपयोग कर सकते हैं DELIMITERसही ढंग से सेट करें
बेहतर प्रोसीजर: डायनामिक WHERE
CREATE PROCEDURE update_sp(
IN p_id INT, IN p_fname VARCHAR(20), IN p_lname VARCHAR(20)
)
BEGIN
UPDATE DemoTable
SET FirstName = p_fname, LastName = p_lname
WHERE Id = p_id;
END
कॉल करें
CALL update_sp(102, 'Robert', 'Wilson');
नोट: चेतावनी "2 warnings" आ सकती है यदि डेटा काटा जाता है या डेटा प्रकार बेमेल होता है।