Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Hiển thị dữ liệu bảng từ Stored Procedure trong MySQL

Vấn đề: Tạo Stored Procedure đơn giản trả về toàn bộ dữ liệu bảng

Cần đóng gói câu lệnh SELECT * FROM table vào một procedure để gọi lại dễ dàng.

Giải pháp: CREATE PROCEDURE với SELECT bên trong

1. Tạo bảng và dữ liệu

CREATE TABLE DemoTable (ClientName VARCHAR(20));
INSERT INTO DemoTable VALUES
('Chris Brown'), ('David Miller'), ('Adam Smith'), ('John Doe');

2. Tạo Stored Procedure

DELIMITER //

CREATE PROCEDURE display_all_records()
BEGIN
    SELECT * FROM DemoTable;
END //

DELIMITER ;

3. Gọi Procedure

CALL display_all_records();

4. Kết quả

+--------------+
| ClientName   |
+--------------+
| Chris Brown  |
| David Miller |
| Adam Smith   |
| John Doe     |
+--------------+

Mở rộng: Procedure có tham số

CREATE PROCEDURE get_clients_by_name(IN p_name VARCHAR(20))
BEGIN
    SELECT * FROM DemoTable WHERE ClientName LIKE CONCAT('%', p_name, '%');
END

Gọi: CALL get_clients_by_name('Chris');

Lợi ích của Stored Procedure

  • Đóng gói logic nghiệp vụ ở tầng database.
  • Giảm traffic mạng (gọi một câu lệnh thay vì gửi SQL dài).
  • Kiểm soát quyền: user chỉ cần EXECUTE trên procedure, không cần SELECT trực tiếp trên bảng.
  • Tái sử dụng, dễ bảo trì.

Lưu ý

  • Dùng DELIMITER khi tạo procedure chứa nhiều câu lệnh.
  • Tránh lạm dụng – logic phức tạp nên xử lý ở application layer.
  • Debug procedure khó hơn SQL thông thường.