Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день!
Возникла следующая проблема:
Есть хранимая процедура на MySQL, в которой объявлен курсор и процедура возвращает полученные строки курсора:
SQL
delimiter |
drop procedure if exists pget_info2 |
create procedure pget_info2 ()
begin declare mheadid int;
declare mhdname char(50);
declare mhdstat char(1);
declare mnorows boolean;
declare mnmrows int default 0;
declare ckbhead cursor for
select headid, hdname, hdstat
from kbhead where headid <= 10;
declare continue handler for not found
set mnorows = true;
open ckbhead;
select found_rows() into mnmrows; the_loop: loop
fetch ckbhead
into mheadid, mhdname, mhdstat;
if mnorows then
close ckbhead;
leave the_loop;
end if;
select mheadid, mhdname, mhdstat;
end loop the_loop;
end |
В php коде хочется запросить вызов процедуры и получить весь набор данных, удовлетворяющий запросу, объявленному в курсоре.
Вот код php-скрипта:
PHP
$conn = mysql_connect('localhost', 'хххх', 'хххх', false, 65536);
mysql_select_db('хххх', $conn);
$rs = mysql_query("call pget_info2();");
while ($row = (mysql_fetch_assoc($rs)))
{
print_r($row);
echo "<br/>";
}
echo "After fetch <br/>";
mysql_close($conn);
Но данный код возвращает только первую запись из всего набора данных. Тот же самый результат и при использовании odbc коннектора.
С чем может быть связано такое поведение? Может для хранимых процедур необходимо использовать другие методы соединения и получения информации?
P.S. При использовании хранимой процедуры вида: SQL
delimiter |
drop procedure if exists pget_info2 |
create procedure pget_info2 ()
begin select headid, hdname, hdstat
from kbhead where headid <= 10;
end |
php скрипт отрабатывает корректно и возвращает весь набор данных
Заранее спасибо за ответы
Неактивен
Неактивен