Вызов mysql ПРОЦЕДУРЫ внутри цикла while работает только в первый раз

У меня есть некоторые данные из базы данных DB, которые я публикую в таблице. Для каждой строки таблицы (каждый цикл цикла while) мне нужно вызвать хранимую процедуру для вычисления данных для последней <td> моей таблицы.

Вот какой код:

 $s = $lk->query("SELECT * FROM A_USERS JOIN A_DATA WHERE A_DATA.id_user = A_USERS.id AND A_USERS.usr_att = 1 AND A_DATA.act_data = 1 AND A_DATA.a_att = 1 AND A_DATA.qty IS NOT NULL ORDER BY ID ASC"); while ($dato = $s->fetch_object()) { print '<tr>'; print '<td>'; print $dato->id; print '</td>'; //others cells $GetP = $lk->query("CALL GetPr($dato->qty, '$dato->prod')"); if(mysqli_num_rows($GetP) === 1){ while($p_db = mysqli_fetch_array($GetP)){ $p = $p_db['p']; } $format = number_format(round($p, 1), 2, ',', '\''); //some other stuff here... }else{ print '<td>'; print 'ERROR'; print '</td>'; } print '</tr>'; } 

Проблема в том, что ТОЛЬКО первый цикл while вызывает процедуру, которая возвращает 1 row . Else Я всегда получаю ERROR на этом <td> что означает, что хранимая процедура не вернула 1 row .

Зачем?

РЕДАКТИРОВАТЬ

Хранимая процедура:

 CREATE DEFINER=`...` PROCEDURE `GetPr`(IN `cli_qty` INT, IN `cli_prod` VARCHAR(10) CHARSET ascii) BEGIN SET @cli_qty = cli_qty; SET @q = (SELECT qty FROM MRG_H ORDER BY ABS(@cli_qty - qty) ASC LIMIT 1); SET @cli_prod = cli_prod; IF @cli_prod = 'OECO' THEN SET @marg = (SELECT (m+v) FROM MRG_H JOIN DT WHERE m <> '' AND q = @q AND par = 'MarOECO'); ELSE SET @marg = (SELECT m FROM MRG_H WHERE m <> '' AND q = @q); END IF; SELECT (Med+@marg)*((Val+100)/100) AS P, D_aaaammgg AS Date FROM PL JOIN TVA WHERE I_D = 0 AND Med <> '' AND Date_f = '' ORDER BY Iden DESC LIMIT 1; END 

ОШИБКА MYSQLI:

 Error: 2014-Commands out of sync; you can't run this command now