Nội dung
Mục tiêu
Luyện tập sử dụng store procedure trong MySql
Mô tả- Store Procedure
Thực hành tạo store procedure trên cơ sở dữ liệu classicmodels.
Chúng ta có bảng customers như sau:
Hướng dẫn
Stored Procedure được định nghĩa như một tập các khai báo sql được lưu trữ ngay trong cơ sở dữ liệu (database) và sau đó, được triệu gọi bởi một program, một trigger hay thậm chí là một stored procedure khác.
Stored Procedured cho phép truyền tham số.
Ưu điểm của Stored Proccedure trong Mysql
Stored procedure làm tăng khả năng thực thi của ứng dụng.
Sau khi được tạo, stored procedure sẽ được biên dịch (compile) và lưu trữ ngay trong database. Lẽ dĩ nhiên, nó sẽ chạy nhanh hơn là một lệnh sql chưa compile được gửi trực tiếp từ ứng dụng.
Stored procedure làm giảm lưu lượng thông tin giao tiếp giữa ứng dụng và database server, thay vì gửi những câu lệnh sql chưa complile dài , ứng dụng chỉ việc gửi tên của stored procedure và lấy lại kết quả.
Những nhược điểm của Stored Procudure
Nếu bạn tạo ra quá nhiều Procedure thì hệ quản trị sẽ sử dụng bộ nhớ để lưu trữ các thủ tục này khá nhiều.
Ngoài ra nếu bạn thực hiện quá nhiều xử lý trong mỗi thủ tục thì đồng nghĩa với việc CPU sẽ làm việc nặng hơn.
S.P chỉ chứa đựng các khai báo sql, vì vậy rất khó có thể viết 1 procedure nhằm thực hiện các thao tác xử lý phức tạp như các ngôn ngữ khác làm được ở tần ứng dụng như php,c#…
Một số hệ quản trị CSDL có những tool hỗ trợ Debug Store nhưng MYSQL thì không có.
Tạo Mysql Stored Procedure đầu tiên
DELIMITER //
CREATE PROCEDURE findAllCustomers()
BEGIN
SELECT * FROM customers;
END //
DELIMITER ;
Giải thích:
- DELIMITER // dùng để phân cách bộ nhớ lưu trữ thủ tục Cache và mở ra một ô lưu trữ mới.
- CREATE PROCEDURE findAllCustomers() dùng để khai báo tạo một Procedure mới, trong đó findAllCustomers chính là tên thủ tục còn hai từ đầu là từ khóa.
- **BEGIN và END; // ** dùng để khai báo bắt đầu của Procedure và kết thúc Procedure
- **DELIMITER ; ** đóng lại ô lưu trữ
Sau đó chạy câu SQL này và nó báo thành công tức là bạn đã tạo mới một thủ tục với tên findAllCustomers.
Cách gọi procedure
call findAllCustomers();
Sửa procedure
Trong Mysql không cung cấp lệnh sửa Stored nên thông thường chúng ta sẽ chạy lệnh tạo mới.
Lệnh Drop để xóa đi Procedure đó và tạo lại:
DELIMITER //
DROP PROCEDURE IF EXISTS `findAllCustomers`//
CREATE PROCEDURE findAllCustomers()
BEGIN
SELECT * FROM customers where customerNumber = 175;
END; //
DELIMITER
Trên đây CodeGym đã cùng với bạn luyện tập sử dụng store procedure trong MySql . Hãy chụp ảnh màn hình và nộp bài thực hành của bạn trên CodeGymX để cùng nhau luyện tập nhé!
0 Lời bình