Viji
@Viji
DevOps Engineer

Что возвращает данная SQL функция — migrate_clients для PostgreSQL?

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 - не лишнее ли это?
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы