sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQL:列定義リストを使用せずにテーブルから動的行を返す方法は?

    anyelementの処理 リターンタイプはで説明されているため、ポリモーフィックタイプ :

    あなたの場合のこの引数はrelation_nameです anyelementと入力しました 、およびNULL::table1を渡すことによって 、これは確かにプランナーにfunction1のこの特定の呼び出しを伝えます SETOF table1を返す必要があります 。これまでのところ良いです。

    ここで問題となるのは、一度実行すると、関数がSETOF table1を返さないことです。 しかし、何か他のもの。これはエグゼキュータが期待していたものではないため、エラーになります。

    質問のタイトルが動的行を返す方法...であるにもかかわらず、 、必要と思われるのは、動的列または多態的な結果セットです。

    また、これはSQLとの困難な戦いです。クエリの実行プランを作成するために、プランナーは各中間結果のタイプとともに各列を知る必要があるためです。出力の構造を見つけるために実行する必要のある関数を使用してクエリを設計すると、鶏が先か卵が先かという問題が発生します。計画は実行の前に行う必要があり、それに依存することはできません。

    anyelementに適用される動的な型侵害技術 、PostgreSQLは、この制約を考慮して、可能な限り多くのポリモーフィズムを実装するために、すでに限界を押し広げています。



    1. SwifthttppostデータがMySQLデータベースに挿入されない

    2. Microsoft SQL ServerでSQLクエリのタイムアウトを設定することは可能ですか?

    3. ora:00936式の欠落エラー

    4. Postgresの挿入または更新トリガーWHEN条件(旧)