Mysql使用Cursor从存储过程中获取值

时间:2011-11-10 11:19:07

标签: mysql stored-procedures cursor

我想从存储过程中检索数据, 此存储过程返回临时表使用引擎内存

例如

DECLARE cur_cat CURSOR FOR CALL getSp();

1 个答案:

答案 0 :(得分:0)

游标只能使用select语句,而不能使用呼叫。

见:http://dev.mysql.com/doc/refman/5.0/en/declare-cursor.html
它说:

  

DECLARE cursor_name CURSOR FOR select_statement

允许select语句,因为存储过程可以返回0,1个或更多结果集; a CURSOR仅支持1个结果集,而MySQL无法知道存储过程将返回的amny结果集。

解决方法
如果存储过程返回结果集,则其中包含select语句 提取该select语句并将其放在游标定义中。

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']);
}