ホームページ >データベース >mysql チュートリアル >「setof Record」を使用してPostgreSQLで仮想テーブルを作成するにはどうすればよいですか?

「setof Record」を使用してPostgreSQLで仮想テーブルを作成するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-24 21:18:35174ブラウズ

How to Create Virtual Tables in PostgreSQL using `setof record`?

PostgreSQL での setof レコードを使用した仮想テーブルの作成

この記事では、PostgreSQL での setof レコード アプローチを使用した仮想テーブルの作成について詳しく説明します。仮想テーブルには、独自の基礎となるデータ ストレージがありません。代わりに、渡されたパラメータまたは計算に基づく一時的なデータ表現です。

3 つの列と未知数の行を返す仮想テーブルを作成するには、次の PL/pgSQL 関数を使用します。

CREATE OR REPLACE FUNCTION f_foo()
  RETURNS TABLE (a int, b int, c int) AS
$func$
BEGIN
RETURN QUERY VALUES
  (1,2,3)
, (3,4,5)
, (3,4,5)
;
END
$func$  LANGUAGE plpgsql IMMUTABLE ROWS 3;

この関数は RETURNS TABLE 句を使用して、関数によって返される行の型を定義します。 RETURN QUERY コマンドは、VALUES 式を使用して複数の行を生成します。 IMMUTABLE 句と ROWS 3 句は、関数のパフォーマンスを最適化します。

仮想テーブルを呼び出すには、関数を呼び出すだけです。

SELECT * FROM f_foo();

さらに、単純な SQL ステートメントを使用して仮想テーブルを構築することもできます。 :

VALUES (1,2,3), (3,4,5), (3,4,5)

より複雑な場合は、列名とタイプ:

SELECT *
FROM  (
   VALUES (1::int, 2::int, 3::int)
        , (3, 4, 5)
        , (3, 4, 5)
   ) AS t(a, b, c);

最後に、仮想テーブルの作成を SQL 関数にカプセル化します:

CREATE OR REPLACE FUNCTION f_foo()
   RETURNS TABLE (a int, b int, c int) AS
$func$
   VALUES (1, 2, 3)
        , (3, 4, 5)
        , (3, 4, 5);
$func$  LANGUAGE sql IMMUTABLE ROWS 3;

これらのアプローチを実装することで、PostgreSQL で仮想テーブルを効果的に作成でき、柔軟性とカスタマイズが可能になります。データ処理中。

以上が「setof Record」を使用してPostgreSQLで仮想テーブルを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。