2012-07-30 197 views
3

我需要一个日志来存储我在MySQL中编写的存储过程。 我知道这在MSSQL Server中可用作@@ procid。在MySQL中获取当前正在执行的存储过程名称?

MySQL中的等价物是什么?

我打算使用timestamp,connection_id,database()。

我怎样才能得到正在执行的sp的名称? 那叫我的sp呢?

感谢, 亚当

+0

尝试'CALL procedureName' – diEcho 2012-07-30 13:14:23

回答

1

你可以通过一个程序的名字作为一个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 | 
+------------+----------------+---------------------+ 
+2

理解,但你仍然需要通过 'prcodure2' 作为硬编码字符串。我想要一个系统函数,它将返回我正在运行的proc的名称,类似于connection_id()或database()或now() – adam 2012-07-30 14:37:30

+1

目标是在没有任何硬编码的情况下获取此信息 – adam 2012-07-30 14:45:46

+2

我知道它更好使用服务器的逻辑,但我还没有在MySQL中找到这样的功能,并建议这样。 – Devart 2012-07-30 14:50:53

相关问题