Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में शर्त के साथ स्टोर्ड प्रोसीजर से रिकॉर्ड कैसे अपडेट करें?

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" आ सकती है यदि डेटा काटा जाता है या डेटा प्रकार बेमेल होता है।

  1. - MySQL स्टोर्ड प्रोसीजर में WHERE IN() क्लॉज का उपयोग कैसे करें?

    MySQL स्टोर्ड प्रोसीजर में डायनामिक WHERE IN() क्लॉज का उपयोग करने के लिए प्रिपेयर्ड स्टेटमेंट (Prepared Statements) का उपयोग करना पड़ता है, क्योंकि IN क्लॉज में सीधे पैरामीटर पास नहीं किया जा सकता। समस्या सीधे पैरामीटर उपयोग नहीं कर सकते: -- यह काम नहीं करेगा: SELECT * FROM table WHERE id IN (inpu

  1. - MySQL में IF स्टेटमेंट का उपयोग करके UPDATE स्टेटमेंट में शर्तें सेट करके रिकॉर्ड प्रदर्शित करें

    आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> StudentName varchar(20), -> StudentMarks int, -> Status varchar(20) -> ); Query OK, 0 rows affected (0.97 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्

  1. - MySQL में स्टोर्ड प्रोसीजर से टेबल रिकॉर्ड कैसे प्रदर्शित करें?

    MySQL में स्टोर्ड प्रोसीजर के अंदर SELECT स्टेटमेंट रखकर टेबल रिकॉर्ड्स प्रदर्शित कर सकते हैं। यह एनकैप्सुलेशन, पुन: उपयोग, और सुरक्षा (टेबल पर सीधे SELECT अधिकार दिए बिना डेटा एक्सेस) के लिए उपयोगी है। उदाहरण: सभी रिकॉर्ड प्रदर्शित करने वाला प्रोसीजर डेमो टेबल बनाएं: mysql> CREATE TABLE DemoT