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

MySQL स्टोर्ड प्रोसीजर में टेबल में डेटा कैसे इन्सर्ट करें?

MySQL स्टोर्ड प्रोसीजर के अंदर INSERT स्टेटमेंट का उपयोग करके टेबल में डेटा इन्सर्ट कर सकते हैं। पैरामीटर लेकर डायनामिक इन्सर्ट करने वाला प्रोसीजर पुन: उपयोग योग्य और सुरक्षित होता है।

सिंटैक्स

CREATE PROCEDURE procedure_name(IN param1 TYPE, IN param2 TYPE, ...)
BEGIN
    INSERT INTO table_name (col1, col2, ...) VALUES (param1, param2, ...);
END

उदाहरण: पैरामीटर के साथ इन्सर्ट प्रोसीजर

डेमो टेबल बनाएं:

mysql> CREATE TABLE DemoTable1928 (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(20),
    Age INT
);

स्टोर्ड प्रोसीजर बनाएं:

mysql> DELIMITER //
mysql> CREATE PROCEDURE insert_demo(IN p_Name VARCHAR(40), IN p_Age INT)
BEGIN
    INSERT INTO DemoTable1928 (Name, Age) VALUES (p_Name, p_Age);
END //
mysql> DELIMITER ;

प्रोसीजर कॉल करें:

mysql> CALL insert_demo('Chris', 24);

परिणाम:

+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
| 1  | Chris | 24   |
+----+-------+------+

उन्नत उदाहरण: वैलिडेशन और ट्रांजैक्शन के साथ

CREATE PROCEDURE insert_user(
    IN p_email VARCHAR(100),
    IN p_name VARCHAR(50),
    IN p_age INT,
    OUT p_user_id INT
)
BEGIN
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        ROLLBACK;
        RESIGNAL;
    END;
    
    START TRANSACTION;
    
    -- वैलिडेशन
    IF p_age < 0 OR p_age > 150 THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid age';
    END IF;
    
    IF EXISTS (SELECT 1 FROM users WHERE email = p_email) THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Email exists';
    END IF;
    
    INSERT INTO users (email, name, age, created_at)
    VALUES (p_email, p_name, p_age, NOW());
    
    SET p_user_id = LAST_INSERT_ID();
    
    COMMIT;
END

लाभ

  • SQL इंजेक्शन सुरक्षा: पैरामीटर बाइंडिंग
  • केंद्रीकृत लॉजिक: बिजनेस नियम एक स्थान पर
  • पुन: उपयोग: एकाधिक एप्लिकेशन से कॉल करें
  • ट्रांजैक्शन नियंत्रण: ACID अनुपालन
  • कम नेटवर्क ट्रैफिक: एक कॉल, एकाधिक ऑपरेशन

प्रोसीजर कॉल करना

-- MySQL क्लाइंट से
CALL insert_demo('David', 30);

-- JDBC से
CallableStatement cs = conn.prepareCall("{CALL insert_demo(?, ?)}");
cs.setString(1, "David");
cs.setInt(2, 30);
cs.execute();

प्रबंधन

SHOW PROCEDURE STATUS WHERE Db = DATABASE();
SHOW CREATE PROCEDURE insert_demo;
DROP PROCEDURE IF EXISTS insert_demo;

स्टोर्ड प्रोसीजर में INSERT डेटा एक्सेस लेयर को सरल, सुरक्षित, और रखरखाव योग्य बनाता है।

  1. Windows में MySQL तालिका डेटा कहाँ संग्रहीत होता है? Windows में MySQL तालिका डेटा कहाँ संग्रहीत होता है?

    Windows में MySQL तालिका डेटा की डिफ़ॉल्ट संग्रहण स्थान जानने के लिए @@datadir सिस्टम वेरिएबल या SHOW VARIABLES कमांड का उपयोग करें। विधि 1: @@datadir वेरिएबल SELECT @@datadir; आउटपुट: +---------------------------------------------+ | @@datadir | +----------------

  1. - Java में MySQL LIKE के साथ खोज वेरिएबल का उपयोग करते समय उद्धरण चिह्नों का सही उपयोग

    सही सिंटैक्स String sqlQuery = SELECT * FROM yourTableName WHERE yourColumnName LIKE % + searchVariable + %; उदाहरण टेबल बनाएं: INSERT INTO demo19 (name) VALUES (John Smith), (David Miller), (Adam Smith), (Chris Brown); Java कोड String searchKeyWord = Smith; String sqlQuery = SELECT * FROM demo19

  1. - MySQL में एक टेबल से दूसरी टेबल में डेटा सम्मिलित करना

    परिचय MySQL में INSERT INTO ... SELECT स्टेटमेंट का उपयोग करके एक टेबल से डेटा चुनकर दूसरी टेबल में सम्मिलित किया जा सकता है। पहली टेबल निर्माण और डेटा select * from DemoTable1; +------+-----------+ | Id | FirstName | +------+-----------+ | 101 | Adam | | 102 | John | +------+-------