我想从存储过程中检索数据, 此存储过程返回临时表使用引擎内存
例如
DECLARE cur_cat CURSOR FOR CALL getSp();
答案 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']);
}