Oracle11g 如何在phalcon中执行oracle过程

Oracle11g 如何在phalcon中执行oracle过程,oracle11g,phalcon,Oracle11g,Phalcon,我必须在phalcon框架中调用oracle过程。有人知道如何在phalcon模型中调用它吗 我试过了,但没用 请帮忙 执行此任务有两种方法,但没有一种与Phalcon相关 要调用存储过程,需要使用PDO准备的语句。由于Phalcon实现了PDO,您可以使用db服务而不是模型来实现。有关如何执行此操作的信息,请参见: 这还取决于您是否安装了与PDO相关的扩展 第二种方法是使用oracle提供的方法,例如: oci_connect oci_parse (sql statement here) o

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

我试过了,但没用


请帮忙

执行此任务有两种方法,但没有一种与Phalcon相关

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

这还取决于您是否安装了与PDO相关的扩展

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

oci_connect
oci_parse (sql statement here)
oci_bind_by_name(bind each parameter to a php variable)
oci_execute
oci_free_statement
您可以创建自己的模型来封装上述内容,并调用相关的存储过程。在收到返回的数据后,您可以实例化resultset对象并用返回的数据填充它

这将为您的应用程序提供正常的结果集,但由于您依赖于存储过程,而不是直接的模型->表关系,因此无法对其进行太多操作

关于为什么应该或不应该使用存储过程,以及为什么应该或不应该使用Oracle,存在着长时间的讨论,有时甚至是激烈的讨论。有一点很清楚,存储过程及其所有优点确实为开发人员提供了一定程度的复杂性和限制。在甲骨文和臭名昭著的游标的例子中,这些限制更加尖锐


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

谢谢,这样就成功了$dbh=$this->getDi()->getShared('dataSource')//使用output param$stmt=$dbh->prepare(“callprocedure\u NAME(:RESULT)”)$stmt->bindParam(1,$value,\PDO::PARAM_STR | \PDO::PARAM_INPUT_OUTPUT,4000)$stmt->execute();