我使用以下代码:
use DoctrineORMQueryResultSetMapping;
...
...
...
...
$em = $this->get( 'doctrine.orm.entity_manager' );
$rsm = new ResultSetMapping();
$query = $em->createNativeQuery( 'CALL procedureName(:param1, :param2)', $rsm )
->setParameters( array(
'param1' => 'foo',
'param2' => 'bar'
) );
$result = $query->getResult();
//$result = $query->execute(); // Also tried
$em->flush();
die(var_dump($result));
我在$result参数中没有得到任何东西。任何人都可以告诉我如何从 Symfony 2.0.15 中的存储过程中获取结果?
尚未添加任何结果集映射信息。有关示例,请参见此处。
我建议使用普通PDO
。在下面的示例中,我调用一个存储过程并获取 OUT
参数的值。
具有IN
和OUT
参数的过程:
CREATE PROCEDURE `CLONE_MEMBER_PRODUCT` (IN ID INT, OUT NEW_ID INT)
BEGIN
/* ... */
END;
getWrappedConnection()
返回DoctrineDBALDriverConnection
的实例,该实例只是PDO
的包装器
/* @var $connection PDO */
$connection = $this->getEntityManager()
->getConnection()
->getWrappedConnection();
$stmt = $connection->prepare('CALL CLONE_MEMBER_PRODUCT(?, @NEW_ID)');
$stmt->bindParam(1, $id, PDO::PARAM_INT);
$stmt->execute();
$stmt = $connection->query("SELECT @NEW_ID");
$id = $stmt->fetchColumn();