我需要用MySQL编写的存储过程的日志。
我知道在MS SQL Server中可以使用@@ procid。

MySQL中的等效项是什么?

我将使用时间戳记,connection_id,database()。

如何获得我正在执行的sp的名称?
那个叫我的SP怎么样?

谢谢,
亚当

最佳答案

您可以将过程名称作为IN参数传递给被调用的过程,并从这些过程中记录此信息。

例如 -

DELIMITER $$

CREATE PROCEDURE procedure1(IN proc_name VARCHAR(255))
BEGIN
  INSERT INTO proc_log VALUES('procedure1', proc_name, NOW());
END$$

CREATE PROCEDURE procedure2(IN proc_name VARCHAR(255))
BEGIN
  INSERT INTO proc_log VALUES('procedure2', proc_name, NOW());
  CALL procedure1('procedure2');
END$$

DELIMITER ;

CALL procedure2(NULL);

SELECT * FROM proc_log;
+------------+----------------+---------------------+
| proc_name  | call_proc_name | call_ts             |
+------------+----------------+---------------------+
| procedure2 | NULL           | 2012-07-30 16:17:53 |
| procedure1 | procedure2     | 2012-07-30 16:17:53 |
+------------+----------------+---------------------+

关于mysql - 获取当前正在执行的存储过程名称在MySQL中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11721949/

10-11 05:23