我得到一个存储过程名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
中,优化器将无法对其验证任何FROM
s,并且由于优化器可以生成多个单元格(或不生成任何单元格),因此您无法可靠地将其放入SELECT
中。此外,存储过程可以有输出变量,这些变量在SELECT
语句的上下文中也不会有意义。
换句话说,由于过程的输出可能与SELECT
查询的任何部分不兼容,MySQL的制造者在全局上阻止它们的混合。
关于mysql - 使用调用程序选择MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38640876/