Gọi thủ tục php mysql
tổng quan Bùi Cường Bùi Cường 15-06-2020 NỘI DUNG BÀI VIẾT
Mục tiêuLuyện tập sử dụng thủ tục lưu trữ trong MySql descriptionThực hiện hành động tạo thủ tục lưu trữ trên cơ sở dữ liệu classicmodels Chúng ta có bảng khách hàng như sau Hướng dẫnThủ tục lưu trữ được định nghĩa là một tập tin khai báo sql được lưu trữ ngay trong cơ sở dữ liệu (cơ sở dữ liệu) và sau đó, được gọi bởi một chương trình, một trình kích hoạt hoặc thậm chí là một thủ tục được lưu trữ khác Stored Procedure cho phép truyền tham số Ưu điểm của Stored Proccedure trong MysqlStored procedure làm tăng khả năng thực thi của ứng dụng Sau khi được tạo, thủ tục lưu trữ sẽ được biên dịch (biên dịch) và lưu trữ ngay trong cơ sở dữ liệu. Lẽ dĩ nhiên, nó sẽ chạy nhanh hơn là một lệnh sql chưa biên dịch được gửi trực tiếp từ ứng dụng Thủ tục lưu trữ làm giảm lưu lượng thông tin giao tiếp giữa ứng dụng và máy chủ cơ sở dữ liệu, thay vì gửi những câu lệnh sql chưa tuân thủ dài , ứng dụng chỉ việc gửi tên của thủ tục lưu trữ và lấy lại kết quả Những nhược điểm của Stored ProcedureNếu bạn tạo ra quá nhiều thủ tục thì quản trị viên 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 lý do trong mỗi thủ tục xử lý thì đồng nghĩa với việc CPU sẽ làm việc nặng hơn Thủ tục được lưu trữ chỉ bao gồm các biến tuyên bố sql, vì vậy rất khó có thể viết 1 thủ tục Để thực hiện các thao tác xử lý phức tạp như các ngôn ngữ khác nhau được ứng dụng phổ biến như php,c#… Một số hệ thống quản trị CSDL có những công cụ hỗ trợ Debug Store nhưng MYSQL thì không có Tạo thủ tục lưu trữ Mysql đầu tiên PHÂN PHỐI // TẠO THỦ TỤC findAllCustomers() BẮT ĐẦU CHỌN * TỪ khách hàng; CHẤM DỨT // PHÂN BIỆT ; Giải thích
Sau đó chạy câu SQL này và nó báo thành công tức là bạn đã tạo một thủ tục mới với tên findAllCustomers Ở bài trước chúng ta đã tìm hiểu khái niệm Mysql Stored Procedure là gì rồi thì trong bài này chúng ta sẽ tiếp tục học chủ đề này. Chúng ta sẽ học cách viết một Stored Procedure mới trong hệ thống quản trị CSDL MYSQL Bài viết này đã được đăng tại freetuts. net , không được sao chép dưới mọi hình thức. Trong bài chúng ta sẽ viết một Thủ tục trả về danh sách sản phẩm của bảng Sản phẩm, chính vì vậy trước tiên bạn phải tạo một bảng tên là Sản phẩm đã có nhé 1. Tạo bảng Sản phẩm để viết Thủ tụcBạn tạo một Cơ sở dữ liệu mới với tên bất kỳ, sau đó dán đoạn mã sau vào chương trình chạy câu hỏi để tạo bảng sản phẩm Bài viết này đã được đăng tại [free tuts. bọc lưới] CREATE TABLE IF NOT EXISTS `products` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `title` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL, `content` TEXT COLLATE utf8_unicode_ci, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ; -- -- Contenu de la table `products` -- INSERT INTO `products` (`id`, `title`, `content`) VALUES (1, 'Học lập trình online tại freetuts.net', 'Gioi thieu website Học lập trình online tại freetuts.net'), (2, 'Tutorials học Stored Procedure', 'Website Tutorials học Stored Procedure'); Câu lệnh này sẽ tạo một bảng mới và thêm vào hai bản ghi để kiểm tra. Bây giờ chúng ta sẽ bắt đầu tìm hiểu cú pháp khai báo và sử dụng Stored Procedure trong MYSQL 2. Tạo thủ tục lưu trữ Mysql đầu tiênTrong sê-ri này, tôi sử dụng IDE SqlYog để quản lý cơ sở dữ liệu nhé, nếu muốn học thuận tiện thì bạn nên cài đặt và sử dụng phần mềm này luôn Tạo thủ tục lưu trữChúng ta sẽ viết một Quy trình với tên là DELIMITER $$ CREATE PROCEDURE procedureName() BEGIN /*Xu ly*/ END; $$ DELIMITER ;3, nhiệm vụ của thủ tục này là truy vấn lấy danh sách tất cả sản phẩm nằm trong bảng Sản phẩm. Nhưng trước tiên chúng ta tìm hiểu cú pháp khai báo tạo mới một thủ tục như sau DELIMITER $$ CREATE PROCEDURE procedureName() BEGIN /*Xu ly*/ END; $$ DELIMITER ; in which
Lưu ý là bạn phải tuân thủ theo cú pháp như trên nhé, cấm chỉ việc thay đổi tên của thủ tục là ok Bây giờ để tạo một thủ tục mới với tên là GetAllProduct thì chúng ta sẽ làm như sau DELIMITER $$ CREATE PROCEDURE GetAllProducts() BEGIN /*Xu ly*/ END; $$ DELIMITER ; Sau đó bạn chạy câu SQL này và nó báo thành công tức là bạn đã tạo một thủ tục mới với tên là GetAllProduct rồi đó. Nếu như bạn sử dụng SqlYog thì bạn vào bảng Sản phẩm và vào mục Stored Procs sẽ thấy một thủ tục vừa được tạo ☛ Thủ tục lưu trữTạo xong rồi bây giờ làm thế nào để gọi đến Cửa hàng này? CALL storeName(); Như vậy để gọi tới tên Thủ tục là GetAllProducts thì ta làm như sau ________số 8 Chạy câu truy vấn này và bạn sẽ thấy kết quả như sau, đây chính là hai bản ghi mà ta đã thêm vào phần 1 Xem danh sách Thủ tục lưu trữ trong hệ thốngNếu bạn không sử dụng SqlYog thì rất khó để quản lý Thủ tục vì không nhìn thấy được nó. Yên tâm vì trong MYSQL có hỗ trợ một số lệnh hiển thị dánh sách Thủ tục lưu sẵn bằng cách chạy lệnh sau . show procedure status; Sau khi chạy lên, bạn sẽ nhận được kết quả dạng như sau Đây chính là Thủ tục mà ta đã tạo ở trên Edit Stored Procedure đã tạoTrong Mysql không cung cấp lệnh chỉnh sửa Stored nên thông thường chúng ta sẽ chạy lệnh tạo mới. Tuy nhiên có một lưu ý đó là nếu như bạn đã chạy lệnh tạo Quy trình một lần rồi, sau đó bạn chỉnh sửa và chạy lại thì ngay lập tức sẽ bị báo lỗi ngay vì trùng tên. Để giải quyết vấn đề này, chúng ta sẽ sử dụng lệnh Drop để xóa thủ tục đó và tạo lại. DELIMITER $$ CREATE PROCEDURE procedureName() BEGIN /*Xu ly*/ END; $$ DELIMITER ;0 Và một lưu ý nữa là khi bạn sử dụng với quyền Người dùng nào thì Store đó sẽ có quyền thực hiện trong phạm vi của Người dùng đó. Ví dụ bạn không có quyền chỉnh sửa mà bạn tạo thủ tục Chỉnh sửa mới thì khi chạy sẽ bị báo lỗi ngay. Chính vì vậy thông thường khi chỉnh sửa bạn phải thêm người định nghĩa nó như sau DELIMITER $$ CREATE PROCEDURE procedureName() BEGIN /*Xu ly*/ END; $$ DELIMITER ;1 Dòng chữ DELIMITER $$ CREATE PROCEDURE procedureName() BEGIN /*Xu ly*/ END; $$ DELIMITER ;4 chính là tên người đã tạo ra nó Lời kếtBài này đang ở mức căn bản hướng dẫn tạo Procedure trong MYSQL thôi chứ không chuyên sâu gì cả,. Bài tiếp theo chúng ta sẽ học cách khai báo tham số truyền vào cho Thủ tục và cách truyền biến vào khi gọi hàm. Xin mời các bạn đón xem nhse |