mysql - SELECT WITH CALL PROCEDURE MySQL

标签 mysql vb.net stored-procedures

我得到了一个名为 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/

相关文章:

oracle - oracle错误程序pl-sql

java - 使用左连接、自定义包装器和动态搜索词的条件查询

wpf - XAML Canvas 上可放大和缩小的滚动条

PHP MySQL 组合 2 个查询

vb.net - VB.NET 中重载 'And' 运算符的示例是什么?

sql - 数据库会读但不会写

Oracle - 从引用游标中选择特定列

function - PostgreSQL 函数和触发器

java - 使用“加载数据到”将 CSV 文件加载到 mysql 表。如何将以下查询转换为 JOOQ?

选择多个日期的mysql日期查询