PgSQLのResultSetを反復処理する方法は何ですか?

PostgreSQLでは、以下の方法で結果セットを反復処理できます。

  1. カーソルを使用する:カーソルは結果セットを指すポインタであり、FETCH ステートメントを使用して結果セット内データを一行ずつ取得できます。以下のサンプルコードを参照してください。
DECLARE my_cursor CURSOR FOR SELECT * FROM table_name;
OPEN my_cursor;
LOOP
    FETCH NEXT FROM my_cursor INTO variable1, variable2, ...;
    -- 处理获取到的数据
    EXIT WHEN NOT FOUND;
END LOOP;
CLOSE my_cursor;
  1. FOR ループを使用する: FOR ループを使用して結果セットを反復処理でき、カーソルを明示的に宣言する必要はありません。サンプルコードを以下に示します。
FOR variable1, variable2, ... IN SELECT * FROM table_name LOOP
    -- 处理获取到的数据
END LOOP;
  1. RETURN QUERY と FOREACH ループを使用して、クエリ結果を配列に格納し、FOREACH ループで配列を反復処理できます。例を示します。
CREATE OR REPLACE FUNCTION my_function() RETURNS SETOF table_name AS $$
DECLARE
    result_table table_name%ROWTYPE;
BEGIN
    FOR result_table IN SELECT * FROM table_name LOOP
        RETURN NEXT result_table;
    END LOOP;
    RETURN;
END;
$$ LANGUAGE plpgsql;

-- 调用函数并遍历结果集
FOREACH result_table IN ARRAY my_function() LOOP
    -- 处理获取到的数据
END LOOP;

PostgreSQLのresultセットを反復処理する一般的な方法は上のとおりです。どのメソッドを使用するかは、実際のニーズと好みに依存します。

bannerAds