我必须在phalcon框架中调用oracle过程。有没有人知道如何在phalcon模型中调用它。
我已经尝试但它没有用。
请帮忙!
答案 0 :(得分:1)
有两种方法可以执行此任务,但没有一种方法与Phalcon相关。
要调用存储过程,您需要使用PDO预处理语句。由于Phalcon实现了PDO,您可以使用db
服务而不是模型来完成此操作。有关如何执行此操作的信息,请访问:
http://php.net/manual/en/pdo.prepared-statements.php
这还取决于您是否安装了oci
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
您可能会创建自己的模型,这些模型将封装上述内容并调用相关的存储过程。收到数据后,您可以实例化结果集对象并使用返回的数据填充它。
这将为您的应用程序提供正常的结果集,但由于您依赖于存储过程而不是直接的模型 - >表关系,因此您将无法使用它。
对于为什么应该或不应该使用存储过程以及为什么应该或不应该使用Oracle,有很长时间的讨论,有时甚至是激烈的讨论。有一件事是清楚的,存储过程及其所有好处确实为开发人员提供了一定程度的复杂性和限制。在甲骨文的情况下,以及臭名昭着的游标,这些限制更加尖锐。
最后要注意的是,如果您创建自己的模型(与Phalcon无关),您可以将存储过程变量作为每个模型中的属性。这样您就可以设置它们,在该模型中使用说oci_*
函数调用存储过程(请参阅上面的call()
函数),然后再次使用该函数更新对象的属性。从存储过程返回变量。这个model
将能够通过调用相关的存储过程来为您提供基本的CRUD操作,这些存储过程将允许这个CRUD,但是暴露出比{$ 1}},insert()
更友好的方法, get()
等。