Курсор может использовать только оператор select
, а не вызов.
см .: http://dev.mysql.com/doc/refman/5.0/en/declare-cursor.html
В нем говорится:
ОБЪЯВЛЯТЬ имя курсора CURSOR FOR select_statement
Это будет только разрешитьоператор выбора, потому что хранимая процедура может возвращать 0, 1 или более наборов результатов;CURSOR
поддерживает только 1 набор результатов, и MySQL не может знать, как амниит наборы результатов будет возвращать хранимая процедура.
Обходной путь
Если ваша хранимая процедура возвращает набор результатов, внутри нее есть оператор выбора.
Извлеките этот оператор выбора и поместите его в определение курсора.
DECLARE cur_cat CURSOR FOR select_statement_extracted_from_stored_procedure.
Если вы просто хотите получить данные из хранимой процедуры, используйте следующий код:
пример кода php
$sql = "CALL getsp";
$result = mysql_query($sql);
if (!$result) { die('error in query'.mysql_error()); }
while ($row = mysql_fetch_array($result)) {
echo "value is: ".htmlentities($row['field1']);
}