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

PostgreSQL関数でrowtypeの配列を宣言するにはどうすればよいですか?

    CREATE OR REPLACE FUNCTION for_example()
      RETURNS integer AS
    $func$
    DECLARE
       r "WEBHOST";
       b "WEBHOST"[];         -- this works
    BEGIN
       FOR r IN 
          SELECT * FROM "WEBHOST"
       LOOP
          b := b || r;        -- this, too
       END LOOP;
    
       RAISE NOTICE '%', b;   -- get feedback
       RETURN 33;
    END
    $func$  LANGUAGE plpgsql; -- and lose the quotes
    

    %rowtype 通常は必要ありません。通常、テーブルの関連する行タイプは、同じ名前のタイプとして使用できます。

    そして、しない 言語名を引用してください。

    また、plpgsql でスタンドアロンの関数呼び出しを行うことはできません。 。代わりに割り当てを使用します。

    また、PostgresでCaMeLケース識別子を使用することもお勧めしません。法的な小文字の識別子を使用して、生活を楽にしてください。

    最後に最適 :これは、集計関数 array_agg()

    CREATE OR REPLACE FUNCTION for_example()
      RETURNS integer AS
    $func$
    DECLARE
       b "WEBHOST"[];
    BEGIN
       SELECT array_agg(tbl) INTO b FROM "WEBHOST" tbl;       
    
       RAISE NOTICE '%', b;
       RETURN 33;
    END
    $func$  LANGUAGE plpgsql;
    



    1. null範囲を含むMySQLGROUPBY年齢範囲

    2. 並列プロセスを作成するためのRubyonRailsでのフォークの使用

    3. 公式のMicrosoftAccessTechブログがオンラインになりました!

    4. @Tailable(spring-data-reactive-mongodb)はspring-data-r2dbcと同等です