SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 07.04.2012 19:00:37

dadli
Завсегдатай
Зарегистрирован: 16.10.2011
Сообщений: 50

не понимаю как вызвать такую процедуру

здравствуйте,
создал хранимую так


CREATE PROCEDURE sp_search(OUT iidd INT, OUT  nam VARCHAR(30) )
BEGIN
SELECT id,name FROM mytable WHERE  id BETWEEN  1 AND 100 INTO iidd,nam ;
END;
 

хранимка создается успешно, но теперь что то не понял как ее вызвать, чтобы видеть результаты. подскажите плиз. Язык програмирования: php

Неактивен

 

#2 07.04.2012 19:10:47

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: не понимаю как вызвать такую процедуру

Неактивен

 

#3 07.04.2012 19:14:46

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: не понимаю как вызвать такую процедуру

CALL sp_search(@a,@b);
SELECT @a,@b;
 


dadli, просьба на форуме придерживаться правил русского языка

Неактивен

 

#4 07.04.2012 19:15:21

dadli
Завсегдатай
Зарегистрирован: 16.10.2011
Сообщений: 50

Re: не понимаю как вызвать такую процедуру

vasya
вот я так пробовал

mysqli_query($db,"CALL sp_search(@i,@n) ")or die(mysqli_error($db));

выводит ошибку:
Result consisted of more than one row
где я допустил ошибку?

rgbeast
извиняюсь, просто я не россиянин и не знаю хорошо русский

Отредактированно dadli (07.04.2012 19:17:51)

Неактивен

 

#5 07.04.2012 19:17:54

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: не понимаю как вызвать такую процедуру

SELECT ... INTO может работать только если запрос возвращает одну строку. Если результат запроса - несколько строк, то записать результат в переменную нельзя.

Неактивен

 

#6 07.04.2012 19:25:09

dadli
Завсегдатай
Зарегистрирован: 16.10.2011
Сообщений: 50

Re: не понимаю как вызвать такую процедуру

rgbeast
значит сохранить такие данние -  ид и имя , когда ид между 1 и 100 -  в хранимке, невозможно ?

Отредактированно dadli (07.04.2012 19:25:34)

Неактивен

 

#7 07.04.2012 19:31:19

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: не понимаю как вызвать такую процедуру

если больше одной строчки, то сохранить в переменную нельзя. Можно сохранить во временную таблицу:

DROP TEMPORARY TABLE IF EXISTS a;
CREATE TEMPORARY TABLE a SELECT id,name FROM mytable WHERE  id BETWEEN  1 AND 100;

Неактивен

 

#8 07.04.2012 19:49:22

dadli
Завсегдатай
Зарегистрирован: 16.10.2011
Сообщений: 50

Re: не понимаю как вызвать такую процедуру

rgbeast
временная таблица почемута не создается, mysqli_error() ошибку не вернёт, но таблица тоже не создается ...

Неактивен

 

#9 07.04.2012 19:55:00

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: не понимаю как вызвать такую процедуру

Учитывайте, что TEMPORARY TABLE уничтожается, как только закрывается соединение. То есть использовать ее нужно в том же соединении.

Неактивен

 

#10 07.04.2012 20:11:53

dadli
Завсегдатай
Зарегистрирован: 16.10.2011
Сообщений: 50

Re: не понимаю как вызвать такую процедуру

понятно, спасибо rgbeast

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson