如何列出mysql存储过程参数

icc*_*c97 5 mysql stored-procedures

用什么SQL列出MySQL存储过程的参数?该information_schema.routines表包含存储过程名称,但似乎没有存储参数的标准位置.

das*_*ash 13

最新版本的MySQL(5.5.3及更高版本)引入了information_schema.parameters对象,该对象应该为您提供所需的信息;

SELECT * 
FROM information_schema.parameters 
WHERE SPECIFIC_NAME = 'your_procedure';
Run Code Online (Sandbox Code Playgroud)

早期版本的MySql依赖于访问mysql.proc表; "param_list"列中包含了您感兴趣的名称的过程中的所有参数信息.但是,信息显然是非标准化的,因为它以逗号分隔的字符串存储:

SELECT param_list FROM mysql.proc WHERE db='your_database' AND name='your_procedure';
Run Code Online (Sandbox Code Playgroud)

得到:

IN param1 VARCHAR(32), IN param2 int, ... 
Run Code Online (Sandbox Code Playgroud)

这需要更多的工作才能用于演示格式; 虽然string.split函数至少可以整理它.