強く あなたがこれをしたくないのではないかと疑ってください。 PL / SQLでオブジェクト型を動的に作成し、この種の柔軟性を構築することは、ほとんどの場合、破滅のレシピです。非常に複雑な動的SQLをどこにでも(呼び出し元と関数の両方で)記述してしまうため、コードの読み取りとデバッグがはるかに困難になります。コードが非常に複雑になると、コードを生成するフレームワークを作成する方がよいでしょうが、問題を解決するコードを作成するだけでなく、問題を解決するコードを生成するコードを作成するという、はるかに難しい問題が残ります。
とはいえ、あなたが本当に、本当に決心していれば、を構築することが可能です。完全に汎用的なパイプラインテーブル関数 。これには、OracleDataCartridgeフレームワークを使用した深いウィザードが含まれます。とてもかっこいいです。しかし、この種のコードを現実的にサポートおよび拡張できる人の数は非常に少ないです。
少し魔法をかけずに(ただし、事実上すべての組織に提案するよりもはるかに多い)、柔軟なパイプラインテーブル関数 これは、事前定義された型階層から型を返すことに依存しています。これはサポートされる可能性が高いですが、タイプ階層を事前に構築できることを前提としています。