2009-07-28 142 views
2

我想获取MySql中存储过程所需的参数数量。那可能吗?获取存储过程的参数数量

我首先想到的是尝试

SELECT * FROM information_schema.ROUTINES; 

但潜藏没有关于参数的数量信息,据我可以看到。下一次尝试是

SHOW PROCEDURE STATUS; 

但这似乎只是返回第一个查询的子集。

我的目标是能够“NULL垫”在PHP中的存储过程调用,以避免类似错误

"Incorrect number of arguments for PROCEDURE schema.table; expected nn, got mm 

使静态查找表当然工作会,但肯定不是desireable。当然,我们可以解析返回的消息,改变查询并重试,但这看起来也不是很好。

在此先感谢!/Victor

回答

1

您可以通过检索参数列表: FROM mysql.proc的 其中db = DATABASE()

SELECT DISTINCT 名, param_list;

+0

谢谢!仍然有点尴尬的格式,但至少所有的信息在那里和可解析。尽管如此,遗憾的是它只和用于创建过程的字符串一样良好(例如IN/OUT/INOUT可以省略)。 – Victor 2009-08-15 21:13:15

0
+0

感谢您的回复,但不幸的是,该声明似乎有两个缺点。 1:它返回_entire_过程 - 需要大量的解析和大量不必要的数据。 2:它要求你是该函数的创建者,否则“创建过程”部分为空,并且不能提取任何信息。 还是谢谢!/Victor – Victor 2009-07-29 06:43:52