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

แสดงข้อมูลตารางจาก Stored Procedure ใน MySQL

สามารถสร้าง Stored Procedure ที่รัน SELECT * FROM table_name เพื่อแสดงข้อมูลตารางได้ แล้วเรียกด้วย CALL procedure_name()

ตัวอย่างการใช้งาน

1. สร้างตารางและเพิ่มข้อมูล

mysql> create table DemoTable1933 ( ClientName varchar(20) ); Query OK, 0 rows affected (0.00 sec)

mysql> insert into DemoTable1933 values('Chris Brown'); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1933 values('David Miller'); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1933 values('Adam Smith'); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1933 values('John Doe'); Query OK, 1 row affected (0.00 sec)

ข้อมูลทั้งหมด:

mysql> select * from DemoTable1933;
+--------------+
| ClientName   |
+--------------+
| Chris Brown  |
| David Miller |
| Adam Smith   |
| John Doe     |
+--------------+
4 rows in set (0.00 sec)

2. สร้าง Stored Procedure แสดงข้อมูล

mysql> delimiter //
mysql> create procedure display_all_records()
    -> begin
    -> select * from DemoTable1933;
    -> end
    -> //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;

3. เรียก Stored Procedure

mysql> call display_all_records();

ผลลัพธ์:

+--------------+
| ClientName   |
+--------------+
| Chris Brown  |
| David Miller |
| Adam Smith   |
| John Doe     |
+--------------+
4 rows in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

ขยาย: Procedure รับ Parameter กรองข้อมูล

DELIMITER //
CREATE PROCEDURE get_clients_by_name(IN search_name VARCHAR(50))
BEGIN
    SELECT * FROM DemoTable1933 
    WHERE ClientName LIKE CONCAT('%', search_name, '%');
END //
DELIMITER ;

-- เรียกใช้
CALL get_clients_by_name('Smith');  -- หาที่มี Smith

ข้อดีของ Stored Procedure สำหรับ SELECT

  • Encapsulation: ซ่อน Logic Query ไว้ใน DB
  • Security: ให้สิทธิ์ EXECUTE Procedure แทน SELECT ตารางตรง
  • Performance: Query Plan Cache (ในบาง Version)
  • Maintainability: เปลี่ยน Logic ที่ Procedure เดียว ไม่ต้องแก้ Application Code

⚠️ ข้อจำกัด

  • MySQL Stored Procedure ไม่คืนค่า Result Set ให้ Application ได้ง่ายเหมือน Function (ต้องใช้ Prepared Statement หรือ Cursor)
  • Debugging ยากกว่า Application Code
  • Version Control ของ Procedure ยุ่งยากกว่า

สรุป: สร้าง Procedure ด้วย CREATE PROCEDURE name() BEGIN SELECT * FROM table; END เรียกด้วย CALL name() เหมาะสำหรับ Encapsulation และ Security แต่อาจเพิ่มความซับซ้อนใน Development