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

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

Mary-Kate Olsen
リリース: 2024-12-24 21:18:35
オリジナル
144 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート