2013-05-11 69 views
4

我正在使用Yii來處理mysql存儲過程。 sp需要幾個參數,其中一個是輸出參數。如何獲取yii框架中的mysql存儲過程輸出參數

執行後的SP,當我試圖讓輸出參數,我碰到一個錯誤

CDbCommand未能執行SQL語句:SQLSTATE [HY000]:常規錯誤時間:2014年不能執行查詢,而其他緩衝查詢是活動的。考慮使用PDOStatement :: fetchAll()。或者,如果您的代碼只針對mysql運行,則可以通過設置PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY屬性啓用查詢緩衝。執行的SQL語句爲:select @error_info as result;

我模擬了代碼如下:

$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(); 

我如何可以走動的問題?謝謝。

+0

的實物模型代碼有打字錯誤,PARAM應ERROR_INFO」 – user1450627 2013-05-11 07:16:45

+0

‘編輯’只需點擊編輯您的帖子。 :) – Xethron 2013-05-11 07:23:45

+0

可能值得檢查:http://stackoverflow.com/questions/9017861/cdbcommandfetchcolumn-failed-sqlstatehy000-general-error-2014-cannot-ex?rq=1 根據該職位其PHP錯誤,並通過更新到PHP 5.3.2進行修復。 – Xethron 2013-05-11 07:25:08

回答

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();