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

PL/pgSQLで`RETURNNEXT`を正しく使用するにはどうすればよいですか?

    示されている例は、完全にRETURN QUERYに置き換えることができます。 :

    BEGIN
        RETURN QUERY SELECT y_.y, 'hi' FROM generate_series(1,10,1) AS y_(y)
    END;
    

    これはロットになります より速く。

    一般に、可能な限り反復を避け、代わりにセット指向の操作を優先する必要があります。

    return next ループを超えることは避けられません(これは非常にまれであり、ほとんどの場合、例外処理が必要な場合に限定されます)。OUTを設定する必要があります。 パラメータ値またはテーブルパラメータ、次にreturn next 引数なし。

    この場合、問題はSELECT yr.y, 'hi';という行です。 これは何もしません。 SELECTの暗黙の宛先を想定しています はoutパラメータですが、そうではありません。 @petermのようにループ変数としてoutパラメータを使用するか、割り当てを使用するか、SELECT INTOを使用する必要があります。 :

    FOR yr IN SELECT * FROM generate_series(1,10,1) AS y_(y) 
    LOOP
        RAISE NOTICE 'Computing %', yr.y;
        y := yr.y;
        result := 'hi';
        RETURN NEXT;
    END LOOP;
    RETURN;
    


    1. Mysqlクエリ-join/unionなどを使用

    2. #1273 –不明な照合:「utf8mb4_unicode_520_ci」

    3. 2つのOracleタイムスタンプ間の秒数の取得

    4. InnoDBを使用した全文検索