【问题标题】:Symfony2 / Doctrine2 Oracle Cursor IssueSymfony2 / Doctrine2 Oracle 光标问题
【发布时间】:2013-08-26 05:55:39
【问题描述】:

我们想知道是否有人可以帮助我们查询有关 Symfony2/Doctrine2 的问题。

我们使用 Oracle 作为我们的应用程序数据库,并且我们已经开始尝试使用 Symfony 2 和 Doctrine 来开发新项目,以摆脱 Zend Framework 1——但是我们遇到了一个小问题。大多数数据库交互涉及调用返回游标的过程;不幸的是,我们目前还没有在 Doctrine 中找到一种方法来使用游标,就像我们使用 Zend DB 一样(自定义书面语句、游标和执行类来包装标准 oci8 特性)。

有没有人在 Doctrine 中成功使用过游标,如果有,他们介意发布一些指针吗?这就是我们在 oci8 中实现它们的方式;但是,由于没有对连接资源属性的本机访问,我们不能在不扩展/创建新类的情况下使用此方法。

为了便于阅读,省略了代码!

$oc = oci_connect($user,$pw,$tns);

$var = null;
$cur = null;

$stmt = "BEGIN schema.package.procedure(:var_in, :cur_out); END;";
$stid = oci_parse($oc, $stmt);

$cur = oci_new_cursor($oc);

oci_bind_by_name($stid, ':VAR_IN', $var);
oci_bind_by_name($stid, ': CUR_OUT', $cur, -1, OCI_B_CURSOR);

oci_execute($stid);

// Now treat the cursor as a statement resource
oci_execute($cur, OCI_DEFAULT);

oci_fetch_all($cur, $result, null, null, OCI_FETCHSTATEMENT_BY_ROW);

oci_free_statement($stid);
oci_close($oc);

//use $result for processing….
var_dump($result);

非常感谢

【问题讨论】:

    标签: php oracle symfony doctrine-orm cursor


    【解决方案1】:

    我在 OUT 参数中发现了关于 Doctrine2 支持游标的零信息。

    可以从容器中获取连接资源,但不建议直接使用。

    // assuming you're in a controller
    $this->get('database_connection')->getWrappedConnection();
    

    对于 Oracle 连接,您可以使用 ZendDB。 Symfony2 有一个很好的包装器:

    https://packagist.org/packages/espend/zend-db-bundle

    https://github.com/Haehnchen/ZendDbBundle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 2013-03-22
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      相关资源
      最近更新 更多