Mysql использовать курсор для получения значения из хранимой процедуры - PullRequest
0 голосов
/ 10 ноября 2011

Я хочу получить данные из хранимой процедуры, эта хранимая процедура возвращает временную таблицу использования памяти двигателя,

пример как

DECLARE cur_cat CURSOR FOR CALL getSp();

1 Ответ

0 голосов
/ 10 ноября 2011

Курсор может использовать только оператор 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']);
}
...