sql >> データベース >  >> RDS >> PostgreSQL

SQL関数の戻りタイプ:TABLEとSETOFレコード

    SETOF recordを返す場合 出力列は型指定されておらず、名前も付けられていません。したがって、このフォームは、サブクエリまたはテーブルであるかのように、FROM句で直接使用することはできません。

    つまり、発行する場合:

    SELECT * from events_by_type_2('social');
    

    このエラーが発生します:

    ただし、SQL呼び出し元は正しい列タイプに「キャスト」できます。このフォームは機能します:

    SELECT * from events_by_type_2('social') as (id bigint, name text);
    

    結果は次のようになります:

     id |      name      
    ----+----------------
      1 | Dance Party
      2 | Happy Hour
     ...
    

    このため、SETOF record あまり実用的ではないと考えられています。結果の列タイプが事前にわからない場合にのみ使用してください。



    1. SQLステートメント「WITH」キーワードの構文エラーが例外をスローします

    2. MySQLで最大トランザクションサイズを決定するにはどうすればよいですか?

    3. フォーラムは未読のトピックをどのように表示しますか?

    4. GETDATE()SQL Server(T-SQL)の例