我正在 VS2012
中使用 MySQL
数据库和 Entity Framework 5.0.0
开发一个项目。
当我尝试从存储过程创建新的 Complex
类型时,单击“获取列信息”按钮时出现错误:
The selected stored procedure or function returns no columns.
我的存储过程代码如下:
DROP PROCEDURE IF EXISTS SearchAlgemeenSet;
Delimiter //
CREATE PROCEDURE SearchAlgemeenSet(IN in_searchQuery VARCHAR(255))
BEGIN
SELECT Blokken, Jaargang, Werk_Uren
FROM algemeensets
WHERE Blokken LIKE in_searchQuery
OR Jaargang LIKE in_searchQuery
OR Werk_Uren LIKE in_searchQuery;
END
//
Delimiter ;
如果 in_searchQuery
参数匹配,我肯定它会返回列。
在我的研究中,我发现了很多针对 Microsoft SQL 数据库的解决方案。但是这些解决方案都不适用于 MySQL 数据库。
如何解决?
最佳答案
I'm positive that it returns columns, if the
in_searchQuery
parameter has a match.
因为您没有使用任何通配符进行部分搜索,除非它找到一个完全匹配项,对于 in_searchQuery
值,不会返回任何行。要进行部分匹配,您需要将通配符 '%'
与 in_searchQuery
值一起使用。
修改后的程序,应该是这样的:
DROP PROCEDURE IF EXISTS SearchAlgemeenSet;
Delimiter //
CREATE PROCEDURE SearchAlgemeenSet(IN in_searchQuery VARCHAR(255))
BEGIN
set @search_criteria := concat( '%', in_searchQuery, '%' );
SELECT Blokken, Jaargang, Werk_Uren
FROM algemeensets
WHERE Blokken LIKE @search_criteria
OR Jaargang LIKE @search_criteria
OR Werk_Uren LIKE @search_criteria;
END;
//
Delimiter ;
当没有搜索条件找到任何匹配项时,将返回空集。
在您的脚本语言中,您必须提前检查该过程是否返回了任何结果。基于此,您可以显示未找到数据的消息,或者您可以执行其他操作。
关于mysql - Entity Framework 存储过程 : Function Import to Complex Type, 获取列信息时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16584455/