2015-01-11 2 views
3

Я сделал хранимую процедуру с параметром. Когда я вызываю эту процедуру без ошибок, мне не показывают никаких результатов. Что не так в этом коде?Почему вызов хранимой процедуры ничего не возвращает?

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.

+0

@ usermesam0023, но когда я использую параметр, он показывает мне ошибку «Результат состоял из более чем одной строки», если в таблице с одним и тем же номером контакта существует несколько строк. –

+0

возможно, это проблема phpMyAdmin. Вы пытались с командной строкой 'mysql' или с другим SQL-клиентом? –

+0

Я предполагаю, что у вас нет такой строки в базе данных. Хорошо работает для меня: http://sqlfiddle.com/#!2/719f95/1 –

ответ

0

Я добавляю свой ответ в полагать, что это может быть полезным для других.

Я боролся с той же проблемой, но когда я назвал эту процедуру в mysqlworkbench, она работала как шарм. Так может быть, это проблема phpmyadmin, как подсказывает @a_horse_with_no_name.

0

При запросе запроса внутри 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

+0

Что мне делать, чтобы решить мою проблему? Мне просто нужны все строки, которые имеют тот же номер мобильного телефона (например, чтобы проверить, вошли ли они в поддельный номер контакта). Я знаю, как это сделать в sql, но мне нужно сделать это с помощью хранимой процедуры. –

+0

Взгляните на это: http://stackoverflow.com/questions/14900351/select-into-returns-null-in-stored-procedure –

+0

Может быть, вы можете использовать FUNCTION вместо ПРОЦЕДУРЫ –

Смежные вопросы