STDIO Developer

20 bundles
4 files2 months ago
1

Code mẫu Stored Procedure Trong MySQL

Stored Procedure là 1 tập hợp các câu lệnh SQL được dùng để thực thi 1 tác vụ cụ thể. Bài viết giúp mọi người làm quen, tạo và thao tác với Stored Procedure Trong MySQL. https://www.stdio.vn/articles/stored-procedure-trong-mysql-575

init_environment.sql

123456789101112131415CREATE 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)
);

seed_data.sql

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071USE procedure_example;

INSERT INTO san_pham (ten, gia, mo_ta)
VALUES (
	'IPHONE 5S 16GB',
    5990000,
    'Thiết kế sang trọng, gia công tỉ mỉ, tích hợp cảm biến vân tay cao cấp hơn, camera cho hình ảnh đẹp và sáng hơn.'
);

INSERT INTO san_pham (ten, gia, mo_ta)
VALUES (
	'iPhone 7 256GB',
    21990000,
    'iPhone 7 256 GB mang trên mình thiết kế quen thuộc từ thời iPhone 6, máy được trang bị bộ nhớ lưu trữ lớn, khả năng chống nước cao cấp, dàn loa stereo cho âm thanh hay và cấu hình cực mạnh.'
);

INSERT INTO san_pham (ten, gia, mo_ta)
VALUES (
	'Sony Xperia X',
    7990000,
    'Sony vừa giới thiệu dòng sản phẩm X Serie mới của hãng trong năm 2016 tại triển lãm MWC. Xperia X là chiếc smartphone tầm trung mới với nhiều điểm nhấn đáng chú ý.'
);

INSERT INTO san_pham (ten, gia, mo_ta)
VALUES (
	'Apple Macbook Air MMGF2ZP/A i5 5250U/8GB/128GB',
    23990000,
    'Với thiết kế gần như hoàn hảo, hiệu năng mượt mà, phiên bản Macbook Air 2015 13 inch sẽ còn tối ưu hơn khi được trang bị card đồ họa tích hợp Intel HD Graphics 6000, thanh RAM 8 GB mạnh mẽ, ổ cứng lưu trữ SSD tốc độ tăng gấp đôi 128 GB và bộ vi xử lý mới từ Intel.'
);

INSERT INTO san_pham (ten, gia, mo_ta)
VALUES (
	'Samsung Galaxy S8 Plus',
    20490000,
    'Galaxy S8 và S8 Plus hiện đang là chuẩn mực smartphone về thiết kế trong tương lai. Sau nhiều ngày được sử dụng, mình xin chia sẻ những cảm nhận chi tiết nhất về chiếc Galaxy S8 Plus - thiết bị đang có doanh số đặt hàng khủng nhất hiện tại.'
);

INSERT INTO san_pham (ten, gia, mo_ta)
VALUES (
	'Xiaomi Mi MIX (6GB/256GB)',
    16990000,
    'Mi Mix có thiết kế tối giản với phần viền ở cạnh bên và đỉnh máy đã được làm cực mỏng cho cảm giác như bị loại bỏ hoàn toàn.'
);

INSERT INTO san_pham (ten, gia, mo_ta)
VALUES (
	'Apple Macbook Pro Touch MLH32SA/A i7 6700HQ/16GB/256GB (2016)',
    56990000,
    'MacBook Pro 15” 2016 là “khủng long xinh đẹp” trong thế giới laptop, đặc biệt là sự xuất hiện của thanh Touch Bar – là một dải cảm ứng cho phép truy cập nhanh công cụ.'
);

INSERT INTO san_pham (ten, gia, mo_ta)
VALUES (
	'Acer Aspire SF514 51 72F8 i7 7500U/8GB/256GB/Win10',
    24990000,
    'Acer Aspire SF514-51-72F8 i7 7500U là dòng sản phẩm có thế mạnh về thiết kế sang trọng, gọn nhẹ đậm chất “xách tay” dễ di chuyển. Đồng thời cũng được Acer ưu ái gắn cho một cấu hình khỏe để đáp ứng hầu hết các nhu cầu khi sử dụng máy.'
);

INSERT INTO san_pham (ten, gia, mo_ta)
VALUES (
	'Tai nghe chụp tai Sony MDR - ZX110AP',
    590000,
    ''
);

INSERT INTO san_pham (ten, gia, mo_ta)
VALUES (
	'SIM DCOM 4G VIETTEL 7GB',
    75000,
    'Nạp 70.000đ/tháng để nhận: 7GB data/tháng'
);

stored_procedure_count.sql

123456789101112131415161718USE 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 ;

CALL count_products(@a);

SELECT @a;

stored_procedure_find.sql

123456789101112131415161718192021USE 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 ;

CALL find_product(8);