MySQL 存储过程如何在内部调用另一 MySQL 存储过程?


вполне возможно, что хранимая процедура MySQL может вызвать другую хранимую процедуру MySQL внутри нее. Чтобы продемонстрировать это, мы берем пример, в котором хранимая процедура будет вызывать другую хранимую процедуру, чтобы выяснить last_insert_id.

示例

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)

Теперь, в следующей процедуре insert2() мы вызовем 1-ю хранимую процедуру, то есть 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)

Приведенный выше набор результатов показывает, что когда мы вызываем insert1(), она вставляет первое значение в таблицу с именем employee.tbl, а когда мы выбираем last_insert_id() во 2-й хранимой процедуре, то есть insert2(), то он выдает вывод 1.

更新日期: 22-06-2020

4 тыс. просмотров

开启你的 事业

获得课程认证

开始
广告
© . All rights reserved.