4

我正在使用 Yii 处理一个 mysql 存储过程。sp 有几个参数,其中一个是输出参数。

执行sp后,当我尝试获取输出参数时,我遇到了错误

CDbCommand 未能执行 SQL 语句:SQLSTATE[HY000]:一般错误:2014 在其他无缓冲查询处于活动状态时无法执行查询。考虑使用 PDOStatement::fetchAll()。或者,如果您的代码只针对 mysql 运行,您可以通过设置 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 属性来启用查询缓冲。执行的 SQL 语句是:选择 @error_info 作为结果;

我的模拟代码是这样的:

$sql = 'CALL p_bid(:username, @param)';
$command = Yii::app()->db->createCommand($sql);
$command->bindParam(":username", $username, PDO::PARAM_STR);

$command->execute();

// the following line raise the error
$errorInfo = Yii::app()->db->createCommand("select @error_info as result;")->queryScalar();  

我怎样才能绕过这个问题?谢谢。

4

1 回答 1

2

试试这个,它对我有用

$command = $connection->createCommand("CALL r emove_places(:user_id,:placeID,:place_type,@out)"); 
$command->bindParam(":user_id",$user_id,PDO::PARAM_INT);
$command->bindParam(":placeID",$placeID,PDO::PARAM_INT);
$command->bindParam(":place_type",$place_type,PDO::PARAM_INT);
$command->execute();
$valueOut = $connection->createCommand("select @out as result;")->queryScalar(); 
于 2013-12-31T20:13:47.420 回答