PostGISのストアドプロシージャの戻り値の型

そこに多くの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、名前テキスト)。

 

おすすめ

転載: www.cnblogs.com/giser-s/p/11656004.html