SELECT CALL PROCEDURE MySQL

时间:2016-07-28 15:35:55

标签: mysql vb.net stored-procedures

我有一个带有参数的存储过程名称getStocks。下面的代码是我想如何处理查询的示例。是否可以使用 SELECT QUERY 来调用过程?

  

PS我没有使用功能因为当我在VB.Net中填充DataGridview时应用加载问题

BEGIN

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

END

2 个答案:

答案 0 :(得分:1)

你不能这样做。 CALL是你自己的陈述,你不能以任何方式与SELECT混在一起。如果您无法使用UDF,则必须手动执行集成。

当您考虑CALL可以选择输出结果集时,CALL无法像这样使用。它可能会返回结果集,现在可能。它可能有一个单元格,一行,一列或多行/列。这些列在调用时是未知的,因此如果您在JOIN中调用并且因为它可以生成多个单元格,则优化程序无法对其进行任何FROM验证(或者什么都没有,你不能可靠地把它放在SELECT。此外,存储过程可以具有输出变量,这些变量也不会在SELECT语句的上下文中生成。

换句话说,因为过程的输出可能与SELECT查询的任何部分不兼容,所以mysql的制造者全局阻止它们的混合。

答案 1 :(得分:0)

您想使用用户定义函数(UDF):http://dev.mysql.com/doc/refman/5.7/en/create-function-udf.html。与存储过程不同,UDF可以在查询中内联调用。