Spec-Zone .ru
спецификации, руководства, описания, API
|
SHOW PROCEDURE CODE proc_name
Этот оператор является расширением MySQL, которое доступно только для серверов, которые были созданы с отладкой
поддержки. Это выводит на экран представление внутренней реализации именованной хранимой процедуры. Подобный
оператор, SHOW FUNCTION CODE
,
информация о дисплеях о сохраненных функциях (см. Раздел
13.7.5.20,"SHOW FUNCTION CODE
Синтаксис").
Оба оператора требуют, чтобы Вы были владельцем подпрограммы или имели SELECT
доступ к mysql.proc
таблица.
Если именованная подпрограмма доступна, каждый оператор производит набор результатов. Каждая строка в наборе
результатов соответствует одной "инструкции" в
подпрограмме. Первый столбец Pos
, который является порядковым числом, начинающимся
0. Второй столбец Instruction
, который содержит SQL-оператор (обычно измененный от
первоисточника), или направляющее, у которого есть значение только к обработчику сохраненной подпрограммы.
mysql>DELIMITER //
mysql>CREATE PROCEDURE p1 ()
->BEGIN
->DECLARE fanta INT DEFAULT 55;
->DROP TABLE t2;
->LOOP
->INSERT INTO t3 VALUES (fanta);
->END LOOP;
->END//
Query OK, 0 rows affected (0.00 sec)mysql>SHOW PROCEDURE CODE p1//
+-----+----------------------------------------+| Pos | Instruction |+-----+----------------------------------------+| 0 | set fanta@0 55 || 1 | stmt 9 "DROP TABLE t2" || 2 | stmt 5 "INSERT INTO t3 VALUES (fanta)" || 3 | jump 2 |+-----+----------------------------------------+4 rows in set (0.00 sec)
В этом примере, неисполнимой программе BEGIN
и END
операторы исчезли, и для DECLARE
оператор, только исполнимая часть появляется
(часть, где значение по умолчанию присваивается). Для каждого оператора, который берется из источника, есть
кодовая комбинация variable_name
stmt
сопровождаемый типом (9 средств DROP
, 5 средств INSERT
, и так далее). Заключительная строка содержит инструкцию jump 2
, значение GOTO instruction #2
.