【问题标题】:SHOW CREATE PROCEDURE procedure_name not showing the procedure contentSHOW CREATE PROCEDURE procedure_name 不显示过程内容
【发布时间】:2018-05-29 10:17:29
【问题描述】:

您好,我正在努力解决我必须查看存储过程内容的问题,因为我已发出命令以获取过程的名称

mysql> SHOW PROCEDURE STATUS;
+-----+---------------------------------+-----------+-----------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db  | Name                            | Type      | Definer   | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+-----+---------------------------------+-----------+-----------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| vmp | ccontrol_table | PROCEDURE | user1@% | 2015-11-10 01:01:51 | 2015-11-10 01:01:51 | DEFINER       |         | utf8                 | utf8_general_ci      | latin1_swedish_ci  |
+-----+---------------------------------+-----------+-----------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
1 row in set (0.27 sec)

它向我显示名称为 control_table 的过程存在 要查看我使用过的程序 SHOW CREATE PROCEDURE control_table,它会以这种格式显示,而不是 Content

mysql> SHOW CREATE PROCEDURE control_table;
+---------------+----------+------------------+----------------------+----------------------+--------------------+
| Procedure     | sql_mode | Create Procedure | character_set_client | collation_connection | Database Collation |
+---------------+----------+------------------+----------------------+----------------------+--------------------+
| control_table |          | NULL             | utf8                 | utf8_general_ci      | latin1_swedish_ci  |
+---------------+----------+------------------+----------------------+----------------------+--------------------+
1 row in set (0.28 sec)

我已经使用 MySQL Client 和 mySQL Client Workbench 执行了这个,无法查看过程

【问题讨论】:

  • 那么你想用这个程序做什么你想更新它的内容吗?
  • 是需要更新内容
  • 程序可以在 phpMyAdmin 的例程选项卡中找到,请查看
  • 不涉及 PHP。
  • 你试过SHOW PROCEDURE CODE control_table

标签: mysql linux database stored-procedures mysql-workbench


【解决方案1】:

过程存储在 information_schema.routines 中。 show create 在此处看到 control_table 的条目,但routine_definition 为空 - 这表明有人修改了 information_schema.routines。您可以通过简单的选择检查 information_schema.routines 的内容 -

select routine_name,routine_definition 
from information_schema.ROUTINES
where routine_name = 'control_table'

== 这是输出=====

mysql> select routine_name,routine_definition 
    -> from information_schema.ROUTINES
    -> where routine_name = 'control_table'
    -> ;
+---------------------------------+--------------------+
| routine_name                    | routine_definition |
+---------------------------------+--------------------+
| control_table | NULL               |
+---------------------------------+--------------------+
1 row in set (0.28 sec)

【讨论】:

    【解决方案2】:

    如果您需要在没有标准 SQL 指令(DROP/CREATE PROCEDURE)的情况下更新正文,您可以使用以下指令:

    UPDATE  mysql.proc SET body='begin select 2 from dual; end' WHERE `name` = 'control_table'; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-30
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 2010-11-17
      相关资源
      最近更新 更多