php - Symfony2/Doctrine2 Oracle 游标问题

标签 php oracle symfony doctrine-orm cursor

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

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

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

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

$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);

非常感谢

最佳答案

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

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

// 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

关于php - Symfony2/Doctrine2 Oracle 游标问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18398457/

相关文章:

php - csv文件上传后自动生成MySQL表

Oracle - 在没有并行选项的情况下创建表

oracle - JVM 数据源调整 tomEE 连接池中的空闲数据库连接

zend-framework - 在doctrine2中是否可以有一个不是主键的自动增量列?

symfony - 在symfony2中调用控制台函数

symfony - Sonata admin-bundle - 尚未注销导航栏

php - Codeigniter 验证库在 session 中存储错误

php - 在 MYSQL 数据库中更新外键时出错,其中来自选择框的错误选项数据用于更新外键

php - 如何将我的网站从 mysql 迁移到 mysqli?

oracle - 如何以编程方式将用户添加到 Oracle APEX 4.x 中的访问控制列表?