13.49 PIPELINED句

テーブル・ファンクションまたは多相テーブル・ファンクションの結果を繰り返し戻すようデータベースに指示します。

テーブル・ファンクションでのみ使用し、このファンクションがパイプラインであることを指定します。パイプライン・テーブル・ファンクションは、行を処理した直後に起動元に行を戻し、行の処理を継続します。起動元に(制御を戻さずに)行を戻すために、このファンクションではPIPE ROW文を使用します。

テーブル・ファンクションはコレクション型を返します。

多相テーブル・ファンクションは、戻り型が引数によって決定されるテーブル・ファンクションです。

問合せのFROM句内で、ファンクション名の前でTABLEキーワードを使用して、両方の種類のテーブル・ファンクションを問い合せます。次に例を示します。

SELECT * FROM TABLE(function_name(...))

テーブル・ファンクションの引数リストまたは空のlist ()がある場合、TABLE演算子は省略できます。次に例を示します。

SELECT * FROM function_name()

これによって、ファンクションで行が生成されると、データベースによってその行が戻されます。

PIPELINEDオプションは、次のSQL文に指定できます。

構文

pipelined_clause ::=

セマンティクス

pipelined_clause

pipelined_clauseはファンクション内で1回のみ使用できます。

PIPELINED

パイプライン・ファンクションを作成するには、ファンクション定義にpipelinedを含めます。パイプライン・ファンクションを定義する前に宣言する場合、ファンクションの宣言でPIPELINEDオプションを指定する必要があります。

{ IS | USING }

  • キーワードPIPELINEDを単独で指定する場合(PIPELINED IS ...)は、PL/SQLファンクション本体でPIPEキーワードを使用する必要があります。このキーワードは、コレクション全体を単一の値として戻すのではなく、コレクションの個々の要素をファンクションから戻すようにデータベースに指示します。

  • 開始、フェッチおよび終了の操作が含まれるインタフェースを事前定義する場合は、PIPELINED USING implementation_type句を指定できます。実装タイプは、ODCITableインタフェースを実装する必要があり、テーブル・ファンクションの作成時に存在している必要があります。この句は、C++やJavaなどの外部言語で実装されるテーブル・ファンクションに便利です。

    ファンクションの戻り型がANYDATASETである場合は、ファンクションの実装タイプの一部としてdescribeメソッド(ODCITableDescribe)も定義する必要があります。

[schema.] implementation_type

この実装タイプは、ODCIAggregateサブプログラムの実装が含まれているADTにする必要があります。schemaを指定しない場合、実装タイプは自分のスキーマ内に存在するとみなされます。

PIPELINEDの制限

ネストしたファンクションにPIPELINEDを指定することはできません。

注意:

パイプライン・テーブル・ファンクションは、データベース・リンクを介して実行することはできません。パイプライン・テーブル・ファンクションの戻り型がユーザー定義のSQL型であり、単一データベース内でのみ使用可能であるためです(『Oracle Databaseオブジェクト・リレーショナル開発者ガイド』を参照)。パイプライン・テーブル・ファンクションの戻り型がPL/SQL型のように見える場合でも、そのPL/SQL型は実際にはデータベースによって対応するユーザー定義のSQL型に変換されます。

PIPELINED [ ROW | TABLE ] POLYMORPHIC USING [schema.] implementation_package

多相テーブル・ファンクションのエラボレータは、スタンドアロン・ファンクションの宣言またはパッケージ・ファンクションの宣言で指定できます。

PIPELINED

多相テーブル・ファンクションを定義するときに必要です。

ROW

TABLE型の単一の入力引数が、任意の単一行を使用して新しい列を判別する場合はROWを指定します。

TABLE

TABLE型の単一の入力引数が、現在の行を使用して新しい列を判別し、表全体または表の論理パーティションで動作する場合はTABLEを指定します。

POLYMORPHIC

POLYMORPHICの制限

次の句は、POLYMORPHICテーブル・ファンクションでは使用できません。
  • PARALLEL_ENABLE句

  • RESULT_CACHE句

  • DETERMINISTICオプション

  • AUTHIDプロパティ(実行者権限および定義者権限句)

USING[schema.]implementation_package

多相テーブル・ファンクション(PTF)実装パッケージを参照します。この仕様にはDESCRIBEメソッドを含める必要があります。OPENFETCH_ROWSおよびCLOSEメソッドの仕様は任意です。実装パッケージの仕様がすでに存在している必要があります(PTFとその実装が同じパッケージに作成される場合を除く)。

関連トピック

この章:

他の章:

その他のドキュメント: