我得到一个存储过程名getStocks有一个参数。下面的代码是我想如何处理查询的一个示例。使用SELECT查询是否可以调用过程?
PS我没有使用函数,因为我在VB.Net中填充DataGridview时遇到了加载问题

BEGIN

SELECT ItemId, CatalogNumber, call getStocks(ItemId) AS quantity,
Cost, Minimum, Maximum, TypeId, SupplierId FROM items;

END

最佳答案

你不能这么做。CALL是它自己的语句,不能以任何方式与SELECT混合。如果不能使用自定义项,则必须手动执行集成。
当您认为CALL可以选择性地输出resultset时,CALL不能像这样使用。它可能会返回一个结果集,现在可能。它可能有一个单元格、一行、一列或多行/列。这些列在调用时是未知的,因此如果您将调用放入JOIN中,优化器将无法对其验证任何FROMs,并且由于优化器可以生成多个单元格(或不生成任何单元格),因此您无法可靠地将其放入SELECT中。此外,存储过程可以有输出变量,这些变量在SELECT语句的上下文中也不会有意义。
换句话说,由于过程的输出可能与SELECT查询的任何部分不兼容,MySQL的制造者在全局上阻止它们的混合。

关于mysql - 使用调用程序选择MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38640876/

10-09 05:59
查看更多