そこに多くのPostgresqlのストアドプロシージャは唯一、独自の使用して、事前に記録されている値を返します、そしてゆっくり拡大
ジオメトリは、PostgreSQLサポートの任意のタイプとすることができる1、タイプtype、(変化する整数/テキスト/文字.....)
CREATE OR REPLACE FUNCTIONのテストを( TBLの文字が 変化) RETURNSジオメトリをAS $ BODY $が 宣言 v_resジオメトリを、- 最终结果 始める リターンv_resを。 エンド; $ BODYの$の 言語plpgsqlがVOLATILE STRICT COST 100 ; ALTER FUNCTIONのテストを(文字が 変化) OWNER TO postgresの。
2、テーブルタイプ、戻りデータセット、リターンを定義するには、独自のフィールドを必要とし、ここで選択クエリの実行がリターンで返します。
CREATE OR REPLACE FUNCTIONの(テストを IN TBLの文字 変化) RETURNS TABLE(v_gid 整数をジオメトリをv_res、)AS $ BODY $が 宣言 始まる - 执行返回结果 リターンクエリ 選択 v_uptap_gid として res_uptap_gid、v_uptap_geom としてres_uptap_geom。 エンド; $ BODYする$ LANGUAGE plpgsqlがVOLATILE STRICT COST 100 ROWS 1000 ; ALTER FUNCTIONの(テストを文字 変化) OWNER TO postgresの。
3は、SETOFテーブル/ビューモデルは、データセットに戻され、返されるデータは、通常、テーブルルックアップであります
しかし、それは、テーブル内の既存のフィールドである必要があり、新しいフィールドはしないだろう(例えば、私は種類を識別したい「タイプを選択し、。* TB Aから」復帰時)
便利な場所は、リターン力場を定義されていません(「TBから*を選択する」である場合があります)
CREATE OR REPLACE FUNCTIONの(テストを IN TBLの文字 変化) RETURNS SETOFのTABLE1 AS $ BODYの$の 宣言が 始まる SELECT *を からTABLE1; - 或者 リターンクエリは、選択 * からTABLE1; エンド; $ BODYする$ LANGUAGE plpgsqlがVOLATILE STRICT COST 100 ROWS 1000 ; ALTER FUNCTIONのテスト(文字 変化) OWNERをTO postgresの;
図3に示すように、レコードタイプSETOFデータセットは、SETOFテーブルに似て戻されます
違いは、私は、人々は、フィールドを取ることを求めて、レコードのすべてのフィールドSETOFを返すことができるということです
CREATE OR REPLACE FUNCTIONの(テストを IN TBLの文字 変化) RETURNS SETOF記録AS $ BODYの$の 宣言 Rレコードを、 始める ために、R における EXECUTE 「TBから選択* 」 ループ リターン 次R。 エンドループ; 返します。 エンド; $ BODYする$ LANGUAGE plpgsqlがVOLATILE STRICT COST 100 ROWS 1000 ; ALTER FUNCTIONをテスト(文字 変化) OWNER TO postgresの。 - 调用 選択 * からテスト(' TB ') のような部材(IDのINT、名前テキスト)。