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

Làm thế nào một thủ tục lưu trữ MySQL có thể gọi một thủ tục lưu trữ MySQL khác bên trong nó?

Rất có thể một thủ tục được lưu trữ MySQL có thể gọi một thủ tục được lưu trữ MySQL khác bên trong nó. Để chứng minh điều đó, chúng tôi đang lấy một ví dụ trong đó một thủ tục được lưu trữ sẽ gọi một thủ tục được lưu trữ khác để tìm ra last_insert_id.

Ví dụ

mysql> Create table employee.tbl(Id INT NOT NULL AUTO_INCREMENT, Name Varchar(30) NOT NULL, PRIMARY KEY(id))//
Query OK, 0 rows affected (3.87 sec)

mysql> Create Procedure insert1()
   -> BEGIN insert into employee.tbl(name) values ('Ram');
   -> END//
Query OK, 0 rows affected (0.10 sec)

Bây giờ, trong thủ tục tiếp theo insert2 (), chúng ta sẽ gọi thủ tục được lưu trữ đầu tiên, tức là insert1 ().

mysql> Create Procedure insert2()
   -> BEGIN
   -> CALL insert1();
   -> Select last_insert_id();
   -> END //
Query OK, 0 rows affected (0.11 sec)
mysql> Delimiter ;

mysql> Call insert2();
+------------------+
| last_insert_id() |
+------------------+
| 1                |
+------------------+
1 row in set (0.36 sec)
Query OK, 0 rows affected (0.37 sec)

Bộ kết quả trên cho thấy rằng khi chúng ta gọi insert1 () thì nó sẽ chèn giá trị đầu tiên trong bảng có tên là worker.tbl và khi chúng ta chọn last_insert_id () trong thủ tục được lưu trữ thứ 2 tức là insert2 () thì nó sẽ cho kết quả là 1.