mysql - Entity Framework 存储过程 : Function Import to Complex Type, 获取列信息时出错

标签 mysql stored-procedures visual-studio-2012 entity-framework-5

我正在 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/

相关文章:

sql-server - 检查所有存储过程的语法?

SQL-Server:是否有相当于一般存储过程执行的触发器

c# - 有没有办法在 Visual Studio 2012 中更改解决方案资源管理器的背景颜色?

visual-studio-2012 - LESS 语法高亮和智能感知在 VS2012 中停止工作

git - 无法通过 visual studio 将提交推送到 GitHub

MYSQL:限制每个 whereIn() 的行数

php - 如何从 MySQL 结果创建条件

c++ - MySQL C++ 连接器 Unresolved 依赖项 (VS 2015)

mysql - 使用 cPanel 将 IP 地址范围列入白名单

c# - 如何在C#(ASP.Net)中调用参数化存储过程?