如何在phalcon中执行oracle程序

How to execute oracle procedure in phalcon

我必须在 phalcon 框架中调用一个 oracle 过程。有谁知道如何在phalcon模型中调用它。

我试过了,还是不行。

请帮忙!

有两种方法可以执行此任务,none 其中与 Phalcon 相关。

要调用存储过程,您需要使用 PDO 准备语句。由于 Phalcon 实现了 PDO,您将能够使用 db 服务而不是模型来执行此操作。有关如何执行此操作的信息,请参见此处:

http://php.net/manual/en/pdo.prepared-statements.php

这还要看你是否安装了ociPDO相关扩展

第二种方法是使用 oracle 提供的方法,例如:

oci_connect
oci_parse (sql statement here)
oci_bind_by_name(bind each parameter to a php variable)
oci_execute
oci_free_statement

您可能会创建自己的模型来封装上述内容并调用相关的存储过程。收到返回的数据后,您可以实例化一个结果集对象并用返回的数据填充它。

这会将正常的结果集提供回您的应用程序,但您将无法使用它做很多事情,因为您依赖于存储过程而不是直接的模型->table 关系。

关于为什么应该或不应该使用存储过程,甚至为什么应该或不应该使用 Oracle 的讨论很长,有时甚至是激烈的讨论。有一点很清楚,存储过程及其所有优点确实为开发人员提供了一定程度的复杂性和限制。在 Oracle 的情况下,对于臭名昭著的游标,这些限制更为严格。

最后要注意的是,如果您创建自己的模型(与 Phalcon 无关),您可以将存储过程变量作为每个模型中的属性。这样您就可以设置它们,在该模型中使用 say call() 函数调用存储过程(请参阅上面的 oci_* 函数),然后再次使用从存储过程返回的变量。此 model 将能够通过调用相关存储过程为您提供基本的 CRUD 操作,这些存储过程将允许此 CRUD 但公开对您来说更友好的方法说 insert()get()delete()