Получение данных из хранимой процедуры с курсором

antklim

Новичок
Получение данных из хранимой процедуры с курсором

Добрый день!
Возникла следующая проблема:
Есть хранимая процедура на MySQL, в которой объявлен курсор и процедура возвращает полученные строки курсора:

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-скрипта:

$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. При использовании хранимой процедуры вида:
delimiter |
drop procedure if exists pget_info2 |
create procedure pget_info2 ()
begin
select headid, hdname, hdstat
from kbhead
where headid <= 10;
end |
php скрипт отрабатывает корректно и возвращает весь набор данных

Заранее спасибо за ответы
 

antklim

Новичок
попробовал использовать mysqli
вот пример скрипта:
$link = mysqli_init();
mysqli_real_connect($link, 'localhost', 'хххх', 'хххх', 'хххх');

if (mysqli_connect_errno()) {
echo "Connect failed: " . mysqli_connect_error();
exit();
}

$query = "CALL pget_info2()";

if (mysqli_multi_query($link,$query)) {
if ($result2 = mysqli_store_result($link)) {
while ($row = mysqli_fetch_assoc($result2)) {
echo $row['mheadid']." ".$row['mhdname']."<BR/>";
}

}
}


mysqli_close($link);


Результат не отличается от предыдущих результатов: по прежнему возвращается только первая запись из курсора

-~{}~ 09.11.09 09:02:

Тема закрыта. Решение найдено.
 

Alexandre

PHPПенсионер
Тема закрыта. Решение найдено.
так озвуч тем, кто столкнется с данной проблемой в будущем.

знаю, что у нас когда-то были проблемы и по этому перешли на PDO
 
Сверху