我如何调用存储过程(使用zf2,doctrine 2)?

时间:2014-07-06 14:30:56

标签: mysql stored-procedures doctrine-orm zend-framework2

为什么它不起作用?我如何调用存储过程?

$rsm = new \Doctrine\ORM\Query\ResultSetMappingBuilder($this->objectManager);
$query = $this->objectManager->createNativeQuery('call `ftemplate_setcell`(:t, :col, :row, :p, :r, :v)', $rsm)->
setParameters($this->data);  
$query->Execute();
$this->objectManager->flush();

1 个答案:

答案 0 :(得分:5)

要执行存储过程或函数,您可以使用连接本身执行以下操作:

$conn = $this->getServiceManager()->get('doctrine.entitymanager.orm_default')->getConnection();
$stmt = $conn->prepare($storedProcedureSQL);
$stmt->bindParam(':param1', $param1);
$stmt->bindParam(':param2', $param2);
$stmt->execute();

如果您有输出参数,可以通过以下绑定获取它:

$stmt->bindParam(':outputParam', $outputParam, \PDO::PARAM_INPUT_OUTPUT, 32);

执行语句后,您可以使用保存函数或过程输出参数值的变量$outputParam