如何在 phpMyAdmin 中查看我的存储过程?

Posted

技术标签:

【中文标题】如何在 phpMyAdmin 中查看我的存储过程?【英文标题】:How do I view my stored procedures in phpMyAdmin? 【发布时间】:2011-09-01 05:10:30 【问题描述】:

我在phpMyAdmin中创建了一个存储过程

CREATE PROCEDURE Sample()
SELECT * FROM feedback

在哪里可以查看此程序?如果在 phpMyAdmin 中不可能,有哪些好的程序具有编写、存储和查看存储过程、表等的功能?

【问题讨论】:

根据phpMyAdmin home page,它具有“管理存储过程和触发器”的能力,但我终生无法弄清楚如何。 为了对网络上所有神圣事物的热爱和你自己的理智——请不要使用那些垃圾 PHPMyAdmin,那里有很多更好的 GUI 工具,但不是构成巨大的安全风险,而且它们没有糟糕的可用性。其中之一是 mysql Workbench (mysql.com/downloads/workbench),另一个是 SQLYog(webyog.com)。 该死,我很高兴我找到了这个线程和关于 MySQL Workbench 的评论!谢谢注!我刚开始使用 PHP/MySQL,甚至不知道存在更高级的工具。 Workbench 让我想起了很多 MS SQL Management Studio,这正是我所需要的!让它工作起来非常容易 - 只需解压缩 zip,运行,点击连接,一切都设置好了! @N.B: 是的,但是许多 web 主机服务既不给你 shell 访问权限,也不在互联网上公开他们的 MySQL 数据库服务器,所以通常你唯一的选择是使用预安装的 PHPMyAdmin。 @N.B 我想扮演魔鬼的拥护者,请您引用一个专门解决您对 PHPMyAdmin 中“巨大、巨大的安全风险”的意见的来源。具体来说,为 PHPMyAdmin 使用而保护服务器的所有建议步骤都适用于任何 PHP 脚本(可能已经在运行)的使用,甚至更适用于任何远程数据库管理软件的使用,包括 MySQL Workbench 和 SQLYog。来源:***.com/questions/3661911/… 至于可用性,这只是一个偏好,不值得讨论。 【参考方案1】:

在phpmyadmin中查看存储过程:

查询:

SELECT routine_definition
FROM information_schema.routines
WHERE 
routine_name = 'procedure_name' AND routine_schema = 'databasename';

这里是如何在 phpmyadmin 中到达那里。

routines 选项在phpmyadmin 中可用。在您至少拥有一个存储过程之前,该链接在 PHPmyadmin 中不可见。查看上图并点击structure标签下的routines链接。

【讨论】:

并非所有 PHPMyAdmin 安装都有它。我的服务器上 1&1 的那个,只是没有这个链接(我的本地主机上的 PHPMyAdmin 有它),并且在很多方面都失败了存储过程。 OP 最好与管理员一起使用,我在这个主题中发布过。不管怎样,你的回答还是值得一票的。 @Hibou57 尝试将主题更改为original,我可以在“权限”旁边找到一个新标签“例程” 我认为重要的是要说(因为它发生在我身上)“例程”链接不会显示,除非您确实为数据库定义了存储过程。因此,如果这是您第一次使用它们,只需在查询框中运行查询,然后返回数据库并查找 Routines 链接,您就会看到刚刚创建的存储过程。 +1 用于屏幕截图。哇,你似乎是唯一一个制作可视化工具屏幕截图,而不是粘贴脚本的人。 如果您无法从图像中看到状态:例程链接显示在表列表数据库结构选项卡下。因此,单击数据库名称以查看数据库中的表,然后单击结构选项卡,在表列表之后,例程链接将显示,但前提是您已经有例程。【参考方案2】:
select routine_definition
from information_schema.routines
where routine_schema = 'db_name'
and routine_name = 'sp_name';

【讨论】:

【参考方案3】:

这个answer 展示了如何在没有脚本的情况下查看它们。

“一旦您创建了存储过程,它将出现在您的表格下方的例程字段集中(在结构选项卡中),您可以轻松更改/删除它。”

【讨论】:

【参考方案4】:

总之你可以使用这个sql

SHOW CREATE PROCEDURE Sample;

更多信息在这里

http://dev.mysql.com/doc/refman/5.0/en/show-create-procedure.html http://dev.mysql.com/doc/refman/5.0/en/faqs-stored-procs.html#qandaitem-B-4-1-6

更新:如果您不记得名称,可以查询INFORMATION_SCHEMA 数据库以查看所有过程(如果您记得部分名称,您可以在ROUTINE_NAME 上使用 LIKE)

SELECT ROUTINE_TYPE, ROUTINE_NAME, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA='dbname';

【讨论】:

如果我有时不记得名字怎么办?是否有该过程的可视化表示?【参考方案5】:

您可以选择“information_schema”作为数据库并从表“例程”中查询所有条目,以防您不想每次都使用 SQL。

【讨论】:

这是最好的答案.. 看看。 要选择 information_schema 选择另一个数据库并在 SQL 选项卡查询 USE information_schema 中(神秘地“使用 db_name”只选择了服务器根目录会进入主页而不是 db_name)【参考方案6】:

在phpMyAdmin下,点击你的数据库(不在表上),然后点击“+Routines”。

在那里你可以编辑/删除你所有的存储过程

【讨论】:

【参考方案7】:
show procedure status;      -- will show you the stored procedures.
show create procedure MY_PROC;  -- will show you the definition of a procedure. 
help show;          -- show all the available options for the show command.

【讨论】:

【参考方案8】:

在 PHPMYADMIN 3.5.2.2 版本中,您只需单击顶部的例程链接。见附图

【讨论】:

【参考方案9】:

不要忘记,在较小的屏幕上,您必须使用“更多”菜单。

【讨论】:

【参考方案10】:

单击主页,数据库,我创建程序的数据库后。它打开该数据库的结构窗口。 在菜单栏中:“结构,sql,搜索,...”应该有例程,如果没有然后单击右侧的项目,称为更多,它应该在那里(诅咒我的上网本没有24英寸的屏幕)。

要确保您的数据库具有单击导出的过程,请选择“自定义 - 显示所有可能的选项”,在“输出:”下选择“以文本形式查看输出”,在“格式特定选项:”下选择“结构” (就在“转储表”下),确保选择了“添加 CREATE PROCEDURE / FUNCTION / EVENT 语句”(就在“转储表”下)。 现在单击 Go,您的程序应该会显示出来

使用: 版本信息:3.5.2,最新稳定版本:3.5.2.2

【讨论】:

【参考方案11】:

使用Adminer data-base interface。与 PHPMyAdmin 不同,它完全能够查看、编辑和调用存储过程,其中 PHPMyAdmin 失败并出现大量错误(尝试运行 SQL 语句创建一个错误,尝试调用一个错误,尝试更改错误一个已经创建的,除了它无法列出定义的那些......我真的想知道 PHPMyAdmin 在将 SQL 查询文本提交到数据库之前如何处理它,这太可怕了)。

只需将Adminer PHP 文件复制到您的Web 服务器的某个位置,打开相应的URL。登录并选择数据库后,在表列表下方,您将看到存储过程列表,并带有一个调用按钮。单击程序链接,您还可以更改(编辑)它。

老实说,我建议你放弃 PHPMyAdmin,它完全无法正确处理这个问题(请注意,SQLBuddy 也在某种程度上失败了)。

-- 编辑--

为了完整起见,您还可以使用此 SQL 查询列出存储过程:

show procedure status;

或者这个,检索名称已知的过程:

show procedure status where Name = 'name';

【讨论】:

以上是关于如何在 phpMyAdmin 中查看我的存储过程?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 phpMyAdmin 界面使用存储过程

如何在 cpanel 的 phpmyadmin 中编辑或导出存储过程? [关闭]

无法在 phpmyadmin 中执行存储过程

在 MySql/phpmyadmin 中创建存储过程

phpmyadmin 在创建存储过程时卡住了

如何使用 phpmyadmin 在存储过程中创建一段时间,错误 #1064