CREATE OR REPLACE FUNCTION migrate_clients(u_registration_id bigint[], client_context text[], document text[], u_status text[] DEFAULT NULL::text[])
RETURNS TABLE (record_id integer)
LANGUAGE plpgsql
AS $$
DECLARE
i int := 0;
new_client_id int;
context_jsonb jsonb;
profile_jsonb jsonb;
BEGIN
FOR i IN 1 .. array_length(u_registration_id, 1) LOOP
context_jsonb := to_jsonb(client_context[i]::json);
profile_jsonb := to_jsonb(document[i]::json);
INSERT INTO public.profile(tenant_id, entity_uuid, context, document, created_by, status)
VALUES(u_registration_id[i], p_entity_uuid[i], context_jsonb, profile_jsonb, COALESCE(u_status[i], NULL))
RETURNING id INTO new_client_id;
RETURN QUERY SELECT new_client_id AS record_id;
END LOOP;
END
$$;
пока еще не очень силен в sql и есть 2 вопроса по поводу недавно созданной функции
1. Возвратит ли она таблицу с набором всех строк new_client_id/record_id, которые были модифицированны или только одну строку?
2. Сначало сделал
RETURN NEXT new_profile_id
б что давало ошибку
RETURN NEXT cannot have a parameter in function with OUT parameters - почему так и зачем использовать RETURN QUERY SELECT - не лишнее ли это?