*

a);

Môi trường thực nghiệm

Windows 10MySQL Community 5MySQL Workbench 6

Tạo dữ liệu mẫu

Tạo database & các bảngCREATE DATABASE IF NOT EXISTS procedure_example DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;USE procedure_example;CREATE TABLE IF NOT EXISTS san_pham ( id int(10) NOT NULL AUTO_INCREMENT, ten varchar(255) NOT NULL UNIQUE, gia int(10) NOT NULL, mo_ta mediumtext, created_at timestamp DEFAULT NOW() NOT NULL, updated_at timestamp DEFAULT NOW() NOT NULL ON UPDATE NOW(), PRIMARY KEY (id));describe procedure_example.san_pham;Mô hình cơ sở dữ liệu thử nghiệm

*
*

Tạo Stored Procedure để đếm tổng số sản phẩm trong bảng san_phamUSE procedure_example;/** COUNT PRODUCTS **/DROP PROCEDURE IF EXISTS count_products;delimiter //CREATE PROCEDURE count_products (OUT param1 INT) BEGIN SELECT COUNT(*) INTO param1 FROM san_pham; END//delimiter ;Trong đoạn code trên, sử dụng lệnh delimiter để chỉ định kí tự kết thúc cho đoạn lệnh SQL. Mặc định, kí tự chấm phẩy ; được dùng để chỉ thị việc câu lệnh SQL đã chấm dứt.

Trong đoạn lệnh SQL trên, để dùng nhiều câu lệnh SQL khác nhau trong phần thân của Stored Procedure, sử dụng dấu chấm phẩy ; để phân tách các câu lệnh riêng biệt. Do đó, sử dụng kí tự // để báo cho MySQL biết rằng phần khai báo cho Stored Procedure chỉ chấm dứt khi gặp kí tự này, và câu lệnh delimiter được sử dụng để chỉ định điều này.

Kiểm tra kết quả Stored Procedure count_products:

CALL count_products(
a;Kết quả như sau:

*

Tạo Stored Procedure tìm kiếm sản phẩm theo id được truyền vào

USE procedure_example;/** FIND PRODUCT BY ID **/DROP PROCEDURE IF EXISTS find_product;delimiter //CREATE PROCEDURE find_product (IN param1 INT) BEGIN DROP TEMPORARY TABLE IF EXISTS tmp_find_product; CREATE TEMPORARY TABLE IF NOT EXISTS tmp_find_product AS (SELECT * FROM san_pham WHERE id=param1); SELECT * FROM tmp_find_product; END//delimiter ;Kiểm tra kết quả Stored Procedure find_productsCALL find_product(8);Kết quả như sau:

Leave a Reply

Your email address will not be published. Required fields are marked *