我有一个带有参数的存储过程名称getStocks
。下面的代码是我想如何处理查询的示例。是否可以使用 SELECT QUERY 来调用过程?
PS我没有使用功能因为当我在VB.Net中填充DataGridview时应用加载问题
BEGIN
SELECT ItemId, CatalogNumber, call getStocks(ItemId) AS quantity,
Cost, Minimum, Maximum, TypeId, SupplierId FROM items;
END
答案 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可以在查询中内联调用。