Hướng dẫn procedure php - thủ tục php
Show
Mục tiêuLuyện tập sử dụng store procedure trong MySql Mô tảHướng dẫn Ưu điểm của Stored Proccedure trong Mysql Hướng dẫnƯu điểm của Stored Proccedure trong Mysql đượ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. Những nhược điểm của Stored Procudure cho phép truyền tham số. Ưu điểm của Stored Proccedure trong MysqlNhững nhược điểm của Stored Procudure Luyện tập sử dụng store procedure trong MySql Thực hành tạo store procedure trên cơ sở dữ liệu classicmodels. Những nhược điểm của Stored ProcudureLuyện tập sử dụng store procedure trong MySql 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: 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ố. 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ả. 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. Stored procedure 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ó.
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.Drop để xóa đi Procedure đó và tạo lại: 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. 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ả. 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. Stored procedure 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#… Nội dung chính ShowShow Mục tiêuLuyện tập sử dụng store procedure trong MySql Mô tả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ẫnStored 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. đượ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ố. cho phép truyền tham số. Ưu điểm của Stored Proccedure trong MysqlNhững nhược điểm của Stored Procudure 1. Tạo bảng Products để viết Procedure 2. Tạo Mysql Stored Procedure đầu tiên Những nhược điểm của Stored Procudure1. Tạo bảng Products để viết Procedure 2. Tạo Mysql Stored Procedure đầu tiên Tạo Stored Procedure Gọi Stored Procedure Xem danh sách Stored Procedure trong hệ thống Sửa Stored Procedure đã tạo Lời kết: Luyện tập sử dụng store procedure trong MySql Mô tả 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: 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.
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. Stored procedure 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 //Drop để xóa đi Procedure đó và tạo lại: CREATE PROCEDURE findAllCustomers() BEGIN Lời kết: Luyện tập sử dụng store procedure trong MySql Mô tả 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:
Thực hành tạo store procedure trên cơ sở dữ liệu classicmodels. Thực hành tạo store procedure trên cơ sở dữ liệu classicmodels.
Mục tiêuLuyện tập sử dụng store procedure trong MySql Mô tả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ẫnStored 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. đượ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ố. cho phép truyền tham số. Ưu điểm của Stored Proccedure trong MysqlNhững nhược điểm của Stored Procudure 1. Tạo bảng Products để viết Procedure 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 ProcudureNế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. Stored procedure 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:
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:Drop để xóa đi Procedure đó và tạo lại: DELIMITER // CREATE PROCEDURE findAllCustomers() CREATE PROCEDURE findAllCustomers() BEGIN SELECT * FROM customers; END // DELIMITER ;
**DELIMITER ; ** đóng lại ô lưu trữ
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. 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 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 đượ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. **DELIMITER ; ** đóng lại ô lưu trữ cho phép truyền tham số. **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. 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 ProcudureNế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. Stored procedure 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:
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:Drop để xóa đi Procedure đó và tạo lại: DROP PROCEDURE IF EXISTS `findAllCustomers`// CREATE PROCEDURE findAllCustomers() CREATE PROCEDURE findAllCustomers() BEGIN SELECT * FROM customers; END; // DELIMITER Ở 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ệ quản trị CSDL MYSQL. Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.freetuts.net, không được copy dưới mọi hình thức. Trong bài chúng ta sẽ viết một Procedure trả về danh sách sản phẩm của bảng Products, chính vị vậy trước tiên bạn phải tạo một bảng tên là Products đã nhé. 1. Tạo bảng Products để viết ProcedureBạn tạo một Database mới với tên bất kì, sau đó dán đoạn code sau vào trình chạy câu truy vấn để tạo bảng products. Bài viết này được đăng tại [free tuts .net] 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ới một bảng và thêm vào hai record để ta test. 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 Mysql Stored Procedure đầu tiênTrong serie này tôi sử dụng IDE SqlYog để quản lý CSDL nhé, nên nếu muốn học thuận tiện thì bạn nên cài đặt và dụng phần mềm này luôn.IDE SqlYog để quản lý CSDL nhé, nên nếu muốn học thuận tiện thì bạn nên cài đặt và dụng phần mềm này luôn. Tạo Stored ProcedureChúng ta sẽ viết một Procedure với tên là DELIMITER $$ CREATE PROCEDURE procedureName() BEGIN /*Xu ly*/ END; $$ DELIMITER ; Trong đó::
Lưu ý là bạn phải tuân theo cú pháp như trên nhé, ban chỉ việc thay đổi tên của thủ tục là ok. Bây giờ để tạo mới một Procedure 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ới một thủ tục với tên là GetAllProduct rồi đấy. Nếu như bạn sử dụng SqlYog thì bạn vào table Products và vào mục Stored Procs sẽ thấy một thủ tục vừa được tạo:Products và vào mục Stored Procs sẽ thấy một thủ tục vừa được tạo: Gọi Stored ProcedureTạo xong rồi bây giờ làm thế nào để gọi đến Store này? Đơn giản để gọi tới Store nào thì ta chỉ cần dùng cú pháp như sau: Như vậy để gọi tới Procedure tên là GetAllProducts thì ta làm như sau: 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 records mà ta đã thêm ở phần 1: Xem danh sách Stored Procedure trong hệ thốngNếu bạn không sử dụng SqlYog thì rất khó để quản lý Procedure 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 Stored Procedure bằng cách chạy lệnh sau:: Sau khi chạy lên bạn sẽ nhận được kết quả dạng như sau: Đây chính là Procedure mà ta đã tạo ở trên. Sửa Stored Procedure đã tạoTrong 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. Tuy nhiên có một lưu ý đó là nếu như bạn đã chạy lệnh tạo Procedure một lần rồi, sau đó bạn edit 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 thì chúng ta sẽ dùng lệnh Drop để xóa đi Procedure đó và tạo lại:có một lưu ý đó là nếu như bạn đã chạy lệnh tạo Procedure một lần rồi, sau đó bạn edit 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 thì chúng ta sẽ dùng lệnh Drop để xóa đi Procedure đó và tạo lại: DELIMITER $$ DROP PROCEDURE IF EXISTS `GetAllProducts`$$ CREATE PROCEDURE `GetAllProducts`() BEGIN SELECT * FROM products; END$$ DELIMITER ; Và một lưu ý nữa là khi bạn dùng với quyền User nào thì Store đó sẽ có quyền thực hiện trong phạm vu của User đó. Ví dụ bạn không có quyền edit mà bạn tạo mới một Procedure Edit thì khi chạy sẽ bị báo lỗi ngay. Chính vì vậy thông thường khi edit bạn phải thêm người định nghĩa nó như sau: DELIMITER $$ DROP PROCEDURE IF EXISTS `GetAllProducts`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `GetAllProducts`() BEGIN SELECT * FROM products; END$$ DELIMITER ; Dòng chữ DELIMITER $$ CREATE PROCEDURE procedureName() BEGIN /*Xu ly*/ END; $$ DELIMITER ;1 chính là tên người đã tạo ra nó. Lời kết:Bà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ì, . Bài tiếp theo chúng ta sẽ học cách khai tham số truyền vào cho Procedure và cách truyền biến vào khi gọi hàm. Mời các bạn đón xem nhse. |