2017-06-01 114 views
0

執行Oracle過程我都在打電話爾康框架Oracle過程。有誰知道如何在phalcon模型中調用它。如何爾康

我都試過,但它不工作。

請幫忙!

回答

1

有執行此任務的兩種方式和他們都不是爾康相關。

要調用存儲過程,您將需要使用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,但暴露的是有點友好的方法對你說insert()get()delete()

+1

謝謝,這樣一來它的工作! $ dbh = $ this-> getDi() - > getShared('dataSource'); //與輸出PARAM $語句= $ dbh->製備( 「CALL PROCEDURE_NAME(:RESULT)」);$ stmt-> bindParam(1,$ value,\ PDO :: PARAM_STR | \ PDO :: PARAM_INPUT_OUTPUT,4000); $ stmt-> execute(); –