Computer >> Máy Tính >  >> Lập trình >> MySQL

Tạo một thủ tục trong MySQL với các tham số?

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

mysql> create table SumOfAll
   -> (
   -> Amount int
   -> );
Query OK, 0 rows affected (0.78 sec)

Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau

mysql> insert into SumOfAll values(100);
Query OK, 1 row affected (0.18 sec)

mysql> insert into SumOfAll values(330);
Query OK, 1 row affected (0.24 sec)

mysql> insert into SumOfAll values(450);
Query OK, 1 row affected (0.10 sec)

mysql> insert into SumOfAll values(400);
Query OK, 1 row affected (0.20 sec)

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. Truy vấn như sau

mysql> select *from SumOfAll;

Sau đây là kết quả

+--------+
| 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 đượ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.

Quy trình được lưu trữ như sau

mysql> DELIMITER //
mysql> create procedure sp_ChechValue(IN value1 int,OUT value2 int)
   -> begin
   -> set value2=(select Amount from SumOfAll where Amount=value1);
   -> end;
   -> //
Query OK, 0 rows affected (0.20 sec)
mysql> delimiter ;

Hãy để chúng tôi gọi thủ tục được lưu trữ với một số giá trị và lưu trữ đầu ra trong một biến phiên.

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

mysql> call sp_ChechValue(300,@isPresent);
Query OK, 0 rows affected (0.00 sec)

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

mysql> select @isPresent;

Sau đây là kết quả

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

Trường hợp 2:Khi giá trị hiện diện.

Truy vấn như sau. Hãy để chúng tôi gọi là thủ tục được lưu trữ

mysql> call sp_ChechValue(330,@isPresent);
Query OK, 0 rows affected (0.00 sec)

Kiểm tra giá trị của biến phiên @isPresent. Truy vấn như sau

mysql> select @isPresent;

Sau đây là kết quả

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