Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

สร้าง Stored Procedure สำหรับ INSERT ข้อมูลใน MySQL

ใช้ CREATE PROCEDURE รับพารามิเตอร์ แล้ว INSERT เข้าตาราง เรียกใช้ด้วย CALL

รูปแบบพื้นฐาน

CREATE PROCEDURE procedure_name (param1 TYPE, 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
    -> );

สร้าง Stored Procedure (ใช้ DELIMITER):

mysql> delimiter //
mysql> create procedure insert_demo(IN Name varchar(40), IN Age int)
    -> begin
    ->   insert into DemoTable1928(Name, Age) values(Name, Age);
    ->   end
    -> //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;

เรียกใช้ Procedure:

mysql> call insert_demo('Chris', 24);
Query OK, 1 row affected, 1 warning (0.00 sec)

ตรวจสอบข้อมูล:

mysql> select * from DemoTable1928;
+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
|  1 | Chris |   24 |
+----+-------+------+
1 row in set (0.00 sec)

คำอธิบายรายละเอียด

  • DELIMITER //: เปลี่ยน delimiter ชั่วคราว เพื่อให้ ; ภายใน procedure ไม่จบคำสั่ง
  • IN: พารามิเตอร์แบบ Input (มี OUT, INOUT อีก)
  • BEGIN ... END: บล็อกคำสั่ง (ถ้ามีคำสั่งเดียว ไม่ต้องใช้ก็ได้)
  • Warning: ตัวอย่างมี Warning เพราะ Name varchar(40) แต่ตาราง varchar(20) - ควรสอดคล้องกัน

ประโยชน์ของ Stored Procedure

  • ลด Network traffic (ส่งแค่ CALL แทน SQL ยาว)
  • รวม Business Logic ไว้ฝั่ง DB
  • ควบคุมสิทธิ์ได้ละเอียด (GRANT EXECUTE)
  • ป้องกัน SQL Injection (Parameterized)