在Oracle商店中调用一个不使用Doctrine2返回值的过程

时间:2014-03-28 13:09:49

标签: oracle symfony doctrine-orm

我需要调用一个不会返回任何数据的商店程序,所以我不需要任何水化。

当我尝试这样做时

 $rsm = new \Doctrine\ORM\Query\ResultSetMapping();            
 $query = $this->getDoctrine()->getManager()->createNativeQuery(
      "CALL SP_CARGA_LIQ(...)", $rsm );
 $query->getResult();

发生异常,并带有以下消息:

警告:oci_fetch_array():ORA-24374:在获取或执行之前未定义并在/var/www/LiquidacionesWeb/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/OCI8/OCI8Statement.php行中获取217

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

在我的情况下,BEGIN END块中的结束通话有帮助。含义:

$query = $this->getDoctrine()->getManager()->createNativeQuery(
      "BEGIN SP_CARGA_LIQ(...); END;", $rsm );

这种方式似乎是Oracle的错误,而不是Doctrine的

编辑: 你可以用更原生的方式做到这一点:

 $this->getDoctrine()->getConnection()->exec("BEGIN SP_CARGA_LIQ(...); END;");