Я хочу иметь возможность получить некоторый вывод из хранимой процедуры mysql в параметрах OUT, но для случая, когда хранимая процедура также возвращает набор результатов через оператор выбора, как показано ниже.
DELIMITER $$
DROP PROCEDURE IF EXISTS `RD`.`sp`$$
CREATE DEFINER=`root`@`%` PROCEDURE `sp`(in b int, out a int)
BEGIN
select 664656 into a;
select 5;
END$$
DELIMITER ;
При запуске в консоли ниже упомянутой команды одна за другой
call sp(5,@a)
select @a
мы получим результат 5 => 5 @a => 664656
Однако, когда я пытаюсьчтобы запустить тот же код из PHP получить ошибку ниже
[error] [system.db.CDbCommand] CDbCommand::fetchColumn() failed:
SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active.
Consider using PDOStatement::fetchAll().
Alternatively, if your code is only ever going to run against mysql,
you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.. The SQL statement executed was: select @a as result;.
Ниже, пожалуйста, найдите мой PHP-код.
$connection = Yii::app ()->db;
$b=7;
$command = $connection->createCommand ( "CALL sp(:b,@a)" );
$command->bindParam ( ":b", $b, PDO::PARAM_INT );
$command->execute();
$command->getPdoStatement()->fetchAll();
$command->getPdoStatement()->closeCursor();
$valueOut = $connection->createCommand ( "select @a as result;" )->queryScalar ();
echo $valueOut;
Любые идеи, как исправить ???
PHPВерсия 5.3.1
Yii версия 1.1.9
Mysql Версия 5.1.41-3ubuntu12.10