为啥调用存储过程不返回任何东西?
Posted
技术标签:
【中文标题】为啥调用存储过程不返回任何东西?【英文标题】:Why calling a stored procedure does not return anything?为什么调用存储过程不返回任何东西? 【发布时间】:2015-03-09 06:09:10 【问题描述】:我用 in 参数创建了一个存储过程。当我将此过程称为没有错误时,不会向我显示任何结果。这段代码有什么问题?
drop PROCEDURE if exists `getUsersByContact`;
delimiter $$
Create PROCEDURE `getUsersByContact`(
IN contact1 VARCHAR(10)
)
BEGIN
SELECT id,name FROM tbl_user WHERE contact = contact1;
END $$
delimiter ;
当我这样打电话时
call getUsersByContact('9999999999');
它不返回任何行,并且 phpmyadmin 中没有显示错误。但是,当我使用 out 参数并调用存储过程并选择该变量时,它工作正常。我也试过this link和this link。
【问题讨论】:
@usermesam0023 但是当我使用 out 参数时,它会显示错误Result consisted of more than one row
,如果表中存在多个具有相同联系号码的行。
那么可能是 phpMyAdmin 的问题。您是否尝试过使用 mysql
命令行或其他 SQL 客户端?
我猜你在数据库中没有这样的行。适合我:sqlfiddle.com/#!2/719f95/1
当您尝试通过 phpMyAdmin 中的图形工具运行它时会发生什么?最简单的方法是展开导航窗格中的“程序”链接并在此处选择您的程序。
【参考方案1】:
我正在添加我的答案,相信它可能对其他人有用。
我在同样的问题上苦苦挣扎,但是当我在 mysqlworkbench 中调用这个程序时,它就像一个魅力。所以这可能是@a_horse_with_no_name 建议的phpmyadmin 的问题。
【讨论】:
【参考方案2】:在 SP 中运行查询时, 这个可以用!!
SELECT id,name
FROM tbl_user
WHERE contact = `contactname`;
但是这个不行。
SELECT id,name
FROM tbl_user
WHERE contact = contact1;
这里可以找到原因:http://mysqldb.bigresource.com/SELECT-INTO-returns-null-in-Stored-Procedure-Jx95y6IPJ.html
【讨论】:
我应该怎么做才能解决我的问题?我只需要所有具有相同手机号码的行(例如,检查他们是否输入了假联系号码)。我知道如何在 sql 中执行此操作,但我需要通过存储过程执行此操作。 看看这个:***.com/questions/14900351/… 也许你可以使用 FUNCTION 而不是 PROCEDURE以上是关于为啥调用存储过程不返回任何东西?的主要内容,如果未能解决你的问题,请参考以下文章
MS Management Studio 中的存储过程返回数据。使用 C# 调用时不返回任何数据