Ведение журнала хранимых процедур MySQL - PullRequest
1 голос
/ 09 ноября 2019

У меня есть приложение со всеми бизнес-правилами в хранимых процедурах. Каждая хранимая процедура вызывает одну хранимую процедуру с именем verificaToken. Функция этой процедуры заключается в проверке правильности маркера сеанса. Я хочу записывать все вызовы хранимых процедур, и я хотел бы использовать этот verificaToken, потому что он уже реализован во всех хранимых процедурах. Есть ли какой-нибудь способ, чтобы verificaToken идентифицировал его вызывающего и параметры?

Спасибо!

1 Ответ

1 голос
/ 09 ноября 2019

Вы запрашиваете что-то аналогичное пакету отражения, чтобы verificaToken мог получить информацию о стеке вызовов.

Нет, в хранимых процедурах MySQL отсутствует информационная функция о стеке вызовов.

Единственное, что вы можете сделать:

  • Передавать информацию в качестве аргументов в verificaToken каждый раз, когда вы ее вызываете.
  • Задавать пользовательские переменные, которые могут быть прочитаны verificaToken. .

Здесь задокументированы пользовательские переменные: https://dev.mysql.com/doc/refman/8.0/en/user-variables.html

Пример:

mysql> delimiter ;;

mysql> create procedure myproc()
    -> begin
    -> set @mycaller='myproc';
    -> call verificaToken();
    -> end;;

mysql> create procedure verificaToken()
    -> begin
    -> select @mycaller;
    -> end;;

mysql> delimiter ;

mysql> call myproc();
+-----------+
| @mycaller |
+-----------+
| myproc    |
+-----------+

Возвращен набор результатов, полученный из verificaToken(),С этой переменной в теле этой процедуры вы можете делать все, что захотите, например, записывать ее, как вы сказали. Я просто демонстрирую, что можно установить переменную в одной процедуре, и она автоматически отображается для любой другой процедуры, которую вы вызываете.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...