我得到了一个名为 getStocks
的存储过程,它有一个参数。下面的代码是我想如何处理查询的示例。是否可以通过 SELECT QUERY 调用过程?
PS I didn't use Function cuz I'm getting loading problem when I apply it in populating DataGridview in my VB.Net
BEGIN
SELECT ItemId, CatalogNumber, call getStocks(ItemId) AS quantity,
Cost, Minimum, Maximum, TypeId, SupplierId FROM items;
END
最佳答案
你不能这样做。 CALL
是它自己的语句,您不能以任何方式与 SELECT
混合使用。如果您不能使用 UDF,则必须手动执行集成。
当您认为 CALL
可以选择性地输出结果集时,CALL
不能像这样使用是有道理的。它可能会返回一个结果集,现在可能。它可能有一个单元格、一行、一列或许多行/列。这些列在调用时是未知的,因此如果您在 FROM
中调用,优化器无法验证任何 JOIN
,因为它可以产生超过一个单元格(或什么都没有),你不能可靠地将它放在 SELECT
中。此外,存储过程可以有输出变量,这在 SELECT
语句的上下文中也没有意义。
换句话说,因为过程的输出可能与 SELECT
查询的任何部分都不兼容,所以 mysql 的制造商在全局范围内阻止了它们的混合。
关于mysql - SELECT WITH CALL PROCEDURE MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38640876/