ホームページ >データベース >mysql チュートリアル >Postgres 関数から仮想テーブルを返す方法は?

Postgres 関数から仮想テーブルを返す方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-27 10:28:10725ブラウズ

How to Return a Virtual Table from a Postgres Function?

Postgres の関数から仮想テーブルを返す

Postgres では、関数を使用して複数の行と列を持つカスタム仮想テーブルを作成するには、特定の構文。この記事では、仮想テーブルに似た 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: 関数がアドホック行タイプを返すことを示します。
  • クエリを返すVALUES: VALUES 式を使用して複数の行を返すために使用されます。
  • ROWS 3: 返される行の数を宣言し、クエリ プランナーによる実行の最適化を支援します。
  • IMMUTABLE: 結果が変更されないことを指定し、パフォーマンスを考慮します

代替オプション

単純な SQL: 単純なシナリオの場合は、単純な SQL ステートメントで十分です:

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

SQL 関数: ラップすることもできます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;

使用法

仮想テーブルを取得するには:

SELECT * FROM f_foo();

以上がPostgres 関数から仮想テーブルを返す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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