5

MySQL で作成したストアド プロシージャのログが必要です。これは、MS SQL Server で @@procid として利用できることを知っています。

MySQLで同等のものは何ですか?

タイムスタンプ、connection_id、database() を使用します。

実行中のspの名前を取得するにはどうすればよいですか? 私を呼んだSPはどうですか?

ありがとう、アダム

4

1 に答える 1

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 |
+------------+----------------+---------------------+
于 2012-07-30T13:20:35.400 に答える