[Bài đọc] Tạo Store Procedure trong MySql với tham số

Tổng quan

Bạn có thể tạo một tham số bằng IN và OUT. IN được sử dụng để lấy tham số đầu vào và OUT có thể được sử dụng cho đầu ra.

Cú pháp như sau:

DELIMITER //

CREATE PROCEDURE yourProcedureName(IN yourParameterName dataType,OUT

   yourParameterName dataType

)

BEGIN

yourStatement1;

yourStatement2;

.

.

N

END;

//

DELIMITER ;

Đầu tiên, chúng ta sẽ tạo một bảng. Truy vấn để tạo bảng như sau:

create table SumOfAll
(
   Amount int
);

Chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert. Các truy vấn như sau:

insert into SumOfAll values(100); 
insert into SumOfAll values(330);
insert into SumOfAll values(450); 
insert into SumOfAll values(400);
Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Các truy vấn như sau:
select * from SumOfAll;

Sau đây là đầu ra:

+--------+
| Amount |
+--------+
| 100    |
| 330    |
| 450    |
| 400    |
+--------+
4 rows in set (0.00 sec)

Bây giờ, chúng ta sẽ tạo một thủ tục lưu trữ để kiểm tra giá trị có trong bảng hay không. Nếu giá trị đã cho không có trong bảng thì bạn sẽ nhận được giá trị NULL.

Thủ tục lưu trữ như sau:

DELIMITER //
create procedure sp_ChechValue(IN value1 int,OUT value2 int)
   begin
   set value2=(select Amount from SumOfAll where Amount=value1);
   end;
   //
delimiter ;

chúng ta gọi thủ tục lưu trữ với một số giá trị và lưu trữ đầu ra trong biến @isPresent.

Trường hợp 1: Khi giá trị không có trong bảng.

   call sp_ChechValue(300,@isPresent);

Bây giờ hãy kiểm tra giá trị trong biến @isPresent bằng cách sử dụng câu lệnh select. Truy vấn như sau:

select @isPresent;

Sau đây là đầu ra:

+------------+
| @isPresent |
+------------+
| NULL       |
+------------+
1 row in set (0.00 sec)

Trường hợp 2: Khi giá trị có trong bảng.

Các truy vấn như sau:

call sp_ChechValue(330,@isPresent);

Kiểm tra giá trị của biến @isPresent. Các truy vấn như sau:

select @isPresent;

Sau đây là đầu ra:

+------------+
| @isPresent |
+------------+
| 330        |
+------------+
1 row in set (0.00 sec)

Create Store Procedure in MySql with parameters

Leave a Reply

Your email address will not be published.