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 डेटा एक्सेस लेयर को सरल, सुरक्षित, और रखरखाव योग्य बनाता है।