位置ではなく、名前ではなくパラメータの受け渡し様々なドキュメントがそのパラメータを任意の順序で、ストアドプロシージャに渡されることがありますが正しく適正マップDBVARNAME使用して指定のバインディングは、対応するデータベースの変数の属性が、これは実際にはそうではありません。あなたは、常にパラメータを渡す必要が言及しておりとしては、ストアドプロシージャのインターフェイスに表示されると正確に同じ順序で、ストアドプロシージャを、そうでない場合、ColdFusionは例外をスローします。すべてではなく、多くは、データベースサーバーのストアドプロシージャから結果セットを返すことができます。これらのことが、CFPROCRESULTこれらの結果を結合する場合は、それらをあなたのColdFusionアプリケーションで使用するために同じ場合は、cfqueryタグの呼び出しから返された利用できるようにColdFusionのクエリに設定します。とはいえ、一部のデータベースサーバーは、単一のcfstoredprocの呼び出しから、複数の結果セットを返すことができます、これを使用したColdFusionとして、このような機能をサポートする必要があるデータベースにアクセスドライバは、Oracleの場合は、標準装備のようなタイプ4 JDBCドライバが必要ColdFusion MXエンタープライズ版、またはOracleからの無料OICの場合は、ドライバのColdFusion MX Professionalを実行している。戻る現在のコードを見てください。再度1つだけの結果、このストアドプロシージャからの設定と予想し、その結果、ColdFusionクエリーに設定するとバインドされ、次のcfprocresultタグを使用して名前GetGeorgiaCompaniesオブジェクト:
タイプrecCompanyのASはCREATE OR REPLACEパッケージpkg_CompaniesEmployeesレコード(vCompanyName Company.CompanyName%TYPEをvZipCode Company.ZipCode%タイプです);タイプrecEmployee(vLastname Employee.Lastname%TYPEをvFirstname Employee.Firstname%型)レコードである;タイプcurCompanies REFです。カーソルを返すrecCompany;タイプcurEmployees REF CURSORの戻りrecEmployeeです。手続sp_GetCompaniesEmployees(Char、CharのでvNameでvStateは、OUT)curEmployees切れrsEmployees curCompanies rsCompanies;エンドpkg_CompaniesEmployees; 手続sp_GetCompaniesEmployeesのAS /のCREATE OR REPLACE PACKAGE BODYのpkg_CompaniesEmployees(Char、CharのでvNameでは、OUT、curEmployees切れrsEmployees curCompanies)のBEGINオープンとしてrsCompanies vStateのSELECT得意先名、郵便番号から会社のWHERE状態= sp_GetCompaniesEmployees.vStateのORDER BY郵便番号ASCをrsCompanies;オープンセレクトフリガナ、氏名FROM社員のWHERE姓のLIKE sp_GetCompaniesEmployees.vName |用rsEmployees |'%'ORDER BYの姓昇順、名昇順;エンドsp_GetCompaniesEmployees;エンドpkg_CompaniesEmployees; / まず、Oracleパッケージさとは何その名の意味:大きなパッケージまたは個々のコンポーネントのコンテナは、この場合には、4つのユーザー定義データ型やストアドプロシージャが定義されている。パッケージが定義されており、本体ここでは、ストアドプロシージャや関数に自分自身プログラムされて2つの部分:ヘッダー、ここでユーザーが任意のストアドプロシージャとファンクションは、パッケージに含まれているにデータ型とインターフェイスを定義しています。だから、『Oracleパッケージを作成する最初のタスクの場合は、次のコードを使用してこれを行う、そのインターフェイスを定義することです: タイプrecCompanyのASはCREATE OR REPLACEパッケージpkg_CompaniesEmployeesレコード(vCompanyName Company.CompanyName%TYPEをvZipCode Company.ZipCode%タイプです);タイプrecEmployee(vLastname Employee.Lastname%TYPEをvFirstname Employee.Firstname%型)レコードである;タイプcurCompanies REFです。カーソルを返すrecCompany;タイプcurEmployees REF CURSORの戻りrecEmployeeです。手続sp_GetCompaniesEmployees(Char、CharのでvNameでvStateは、OUT)curEmployees切れrsEmployees curCompanies rsCompanies;エンドpkg_CompaniesEmployees; / 次のとおりしかし、正確には、ヘッダーに何を含める必要がありますを参照するには、前方を見るには、Oracleパッケージの本体では、最初のクエリの結果セットが含まれ、実際のカーソルをする必要があります: オープンのSELECT得意先名、郵便番号から会社のWHERE状態= sp_GetCompaniesEmployees.vStateのORDER BY郵便番号ASCをrsCompanies; すべての行は、このカーソルを取得する会社のテーブルから2つの列が含まれて:得意先と郵便番号、これは、カーソル変数を参照するこのカーソルのディメンションを定義します。次に、あなたはこのディメンションのされているデータ型が必要です。レコードと呼ば幸いなことには、Oracle、複雑なユーザーを作成するための能力のデータ型を定義しています。この機能を活用し、レコードのデータ型は次のとおりは、CompanyNameとそれぞれの行は、会社のテーブルから取得した郵便番号の列を保持recCompanyの名前を作成します: タイプrecCompany)レコード(vCompanyName Company.CompanyName%TYPEをvZipCode Company.ZipCode%型である。 recCompanyのデータ型の構成部品も、そのデータ型を定義する必要があります。データの要素を返し、そのデータ型は%型を付けるので、前のレコードの定義は、次のコードと同等です: タイプrecCompanyレコード(vCompanyName VARCHAR2の(40)、vZipCode VARCHAR2の(10))です。 後に、行と同じ次元のカーソルが含まれているために、データ型が、次のよう場合は、カーソルを参照するには、カーソル変数を定義することができます:タイプcurCompanies REF CURSORの戻りrecCompanyです、このタイプの定義は何と言っています、"定義のカーソル変数の名前を返す行がrecCompanyデータ型と同じディメンションを持つcurCompanies。"あなたは、curEmployees -番目のカーソル変数は、同じ番組を繰り返し、あなたには、パッケージのヘッダーのインターフェイスに移動する準備が整いましたにストアドプロシージャ。ストアドプロシージャを返すあなたの2つの結果セットは、作成したストアドプロシージャに似ているインターフェイスは、特定のデータ型のパラメータが含まれています。あなたの2つのクエリのWHERE句で使用される2つの入力パラメータは、宣言を加えた場合には、定義したREF CURSORデータ型の2つの出力パラメータを宣言します: OUTのcurEmployees切れrsEmployees curCompanies rsCompanies は、ストアドプロシージャには、インターフェイスを定義して全体のコードブロックは次のとおり: 手続sp_GetCompaniesEmployees(Char、CharのでvNameでは、OUT、curEmployees切れrsEmployees curCompanies)rsCompanies vState; これは、sp_GetCompaniesEmployeesのインターフェイスを定義するストアドプロシージャの最後には、次のコードがある: エンドpkg_CompaniesEmployees; / これは、pkg_CompaniesEmployee Oracleパッケージにはインターフェイスの正式な定義を終了します。 記事は、09年01月ハーディが提出 免責事項:弊社のウェブサイトは、この資料の内容については責任を負いません。 Webarticles無料の情報リソースです。 重要: この記事は、"位置ではなく名前で、"自動ソフトウェアによって翻訳された以上のパラメータを渡す。大変申し訳ございませんが発生した可能性があります任意のスペルミスを感じている。お客様のご理解いただき、ありがとうございます。
|
|||||
| Online: 336 users browsing the articles directory |
|
|