ホームページ >データベース >mysql チュートリアル >複数の行を含む仮想テーブルを返す Postgres 関数を作成するにはどうすればよいですか?

複数の行を含む仮想テーブルを返す Postgres 関数を作成するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-23 02:15:13286ブラウズ

How to Create a Postgres Function Returning a Virtual Table with Multiple Rows?

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

問題

不明な値を誇る、カスタム コンテンツを含む仮想テーブルを返す Postgres 関数を探しています。行数と 3 列数。適切な構文を見つけるのが困難で、関数の作成に支援が必要です。

解決策

次の構文を利用して目的の関数を構築します。

CREATE OR REPLACE FUNCTION f_foo() -- (open_id numeric) -- parameter not used
  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:複数の行を 1 回で返しますcommand.
  • VALUES: 標準 SQL 式を使用して複数の行を手動で入力します。
  • PARAMETERS: 未使用のパラメータ (open_id 数値) が次のように含まれます。一例ですが、オプション。
  • IDENTIFIERS: 有効な識別子には二重引用符は必要ありません。
  • VOLATILITY: IMMUTABLE は、結果が定数であることを示します。
  • ROWS: の宣言返される行の数 (ROWS 3) は、クエリ プランナーに役立ちます。

代替:

  • 単純な SQL:単純なケースでは、次の SQL ステートメントsuffix:
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;

以上が複数の行を含む仮想テーブルを返す Postgres 関数を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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