2017-06-01 4 views

答えて

1

このタスクを実行するには2つの方法があり、どちらもPhalcon関連ではありません。

ストアドプロシージャを呼び出すには、PDOプリペアドステートメントを使用する必要があります。 PhalconはPDOを実装しているので、モデルではなくdbサービスを使用してこれを行うことができます。これを行う方法についての情報はここにある:

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

これはまた、あなたがoci PDO関連の拡張機能をインストールしているかどうかによって異なります。

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

あなたが潜在的に上記をカプセル化し、関連するストアドプロシージャを呼び出しますあなた自身のモデルを作成することができます。

第二の方法は、次のようなOracleの供給方法を使用することです。データを受信すると、結果セットオブジェクトをインスタンス化し、返されたデータでオブジェクトを生成することができます。

これは通常の結果セットをアプリケーションに戻しますが、ストレート・アップ・モデル - >テーブル関係ではなくストアド・プロシージャを使用するため、多くのことを行うことはできません。

なぜ、ストアド・プロシージャを使用する必要があるのか​​、使用しないのか、さらになぜOracleを使用すべきか、使用すべきではないのかについて、長い議論があります。 1つのことは明らかです。ストアドプロシージャは、すべてのメリットがあり、開発者にとって複雑さと制限があります。オラクルのケースや悪名高いカーソルでは、これらの制限はもう少し深刻です。

あなたが独自のモデル(Phalconとは関係ない)を作成する場合、ストアドプロシージャー変数を各モデルのプロパティとして持つことができます。そうすれば、それらを設定し、そのモデルのcall()関数でストアドプロシージャ(上記のoci_*の関数を参照)を呼び出し、ストアドプロシージャの返された変数でオブジェクトのプロパティを再度更新します。このmodelはこのCRUDを許可していますがinsert()get()delete()など

+1

おかげで、この方法は、それが働いたと言って少し友好的な方法を公開します関連するストアドプロシージャを呼び出すことにより、基本的なCRUD操作であなたを提供することができるようになります! $ dbh = $ this-> getDi() - > getShared( 'dataSource'); //出力パラメータ付き $ stmt = $ dbh-> prepare( "CALL PROCEDURE_NAME(:RESULT)"); $ stmt-> bindParam(1、$ value、\ PDO :: PARAM_STR | \ PDO :: PARAM_INPUT_OUTPUT、4000); $ stmt-> execute(); –

関連する問題