Oracle-এ &variable সিনট্যাক্স কাজ করে, কিন্তু MySQL-এ সেশন ভেরিয়েবল (@variable_name) ব্যবহার করতে হয়।
সিনট্যাক্স
SET @var1 = value1, @var2 = value2, @var3 = value3, ...;
INSERT INTO table_name VALUES (@var1, @var2, @var3, ...);
উদাহরণ
CREATE TABLE student_info (
student_id INT,
student_name VARCHAR(100),
student_age INT,
student_marks INT,
student_country VARCHAR(10)
);
SET @id = 10001, @name = 'Carol', @age = 23, @marks = 89, @country = 'US';
INSERT INTO student_info VALUES (@id, @name, @age, @marks, @country);
ফলাফল
+-----------+-------------+------------+--------------+------------------+
| student_id| student_name| student_age| student_marks| student_country |
+-----------+-------------+------------+--------------+------------------+
| 10001 | Carol | 23 | 89 | US |
+-----------+-------------+------------+--------------+------------------+
ব্যবহারিক উদাহরণ: স্টোরড প্রসিডিউরে
DELIMITER //
CREATE PROCEDURE insert_student(
IN p_name VARCHAR(100),
IN p_age INT,
IN p_marks INT
)
BEGIN
DECLARE v_id INT;
SET v_id = (SELECT COALESCE(MAX(student_id), 0) + 1 FROM student_info);
INSERT INTO student_info VALUES (v_id, p_name, p_age, p_marks, 'BD');
END //
DELIMITER ;
CALL insert_student('Rahim', 20, 95);
প্রিপেয়ার্ড স্টেটমেন্ট (আধুনিক ও নিরাপদ পদ্ধতি)
PREPARE stmt FROM 'INSERT INTO student_info VALUES (?, ?, ?, ?, ?)';
SET @id = 10002, @name = 'Karim', @age = 22, @marks = 88, @country = 'BD';
EXECUTE stmt USING @id, @name, @age, @marks, @country;
DEALLOCATE PREPARE stmt;
দ্রষ্টব্য
@variable— সেশন-স্কোপড, কানেকশন বন্ধ হলে হারায়@@variable— সিস্টেম ভেরিয়েবল- সিকিউরিটি: প্রিপেয়ার্ড স্টেটমেন্ট SQL ইনজেকশন রোধ করে