У меня есть 3 таблицы Person, Address и Person_adress.
Я пишу скрипт с массивом address_code в качестве записи.
Цель скрипта - показать имя и электронная почта каждого человека, живущего на каждом адресе. Затем создайте базу для каждого имени, затем выполните процедуру для каждого письма, затем обновите адрес
, вот мой сценарий:
do $$
DECLARE
-- L'ensemble des adresses
address_codes varchar [] := '{"AF_X1", "AD_X3", "AC_S4"}';
v_code varchar;
v_id_person varchar;
v_firstname_person varchar;
v_email varchar;
BEGIN
FOREACH v_code in array address_codes
LOOP
FOR v_id_person IN SELECT pa.person_id from person_address pa, address a WHERE pa.address_id=a.id AND a.code=v_code
LOOP
RAISE NOTICE 'Traitement de la personne %', v_id_person;
-- Recuperation du nom de la personne
SELECT pe.firstname INTO v_firstname_person from person pe where pe.id = v_id_person;
SELECT pe.email INTO v_email from person pe where pe.id = v_id_person;
RAISE NOTICE 'the firstname of person is %', v_firstname_person;
RAISE NOTICE 'the email of person is %', v_email;
--Here is some treatment based on v_firstname_person value
--Here I some treatment based on v_email value
END LOOP;
UPDATE address SET etat="DONE" where code = v_code;
END LOOP;
END;
$$;
Но значение v_firstname_person по-прежнему равно NULL.
здесь вывод, который у меня есть
, имя пользователя - NULL
i есть значения в моей базе данных;
Как мне решить эту проблему, пожалуйста;