CREATE OR REPLACE FUNCTION LISTNATION (rn in region.r_name%TYPE)
RETURN VARCHAR2 IS
RESULT VARCHAR (160);
BEGIN
result := trim (rn) || ':' ;
FOR aROW IN (
SELECT r_regionkey, n_name
FROM REGION R LEFT JOIN NATION N
on R_REGIONKEY = N_REGIONKEY
WHERE rn = r_name
)
loop
result := aROW.R_REGIONKEY|| ' ' || result||trim(aRow.n_name)||', ';
end loop;
-- return result
return result;
END LISTNATION;
/
--Run my function
select LISTNATION (r_name)from Region;
мой результат возвращается
LISTNATION (R_NAME)
0 0 0 0 0 АФРИКА: АЛЖИР, МАРОККО, МОЗАМБИК, ЭФИОПИЯ, КЕНИЯ,
1 1 1 1 1 АМЕРИКА: АРГЕНТИНА, КАНАДА, БРАЗИЛИЯ, СОЕДИНЕННЫЕ ШТАТЫ, ПЕРУ,
2 2 2 2 2 АЗИЯ: ИНДОНЕЗИЯ, ИНДИЯ, ЯПОНИЯ, ВЬЕТНАМ, КИТАЙ,
3 3 3 3 3 3 ЕВРОПА: ГЕРМАНИЯ, ФРАНЦИЯ, РУМЫНИЯ, ВЕЛИКОБРИТАНИЯ, РОССИЯ,
4 4 4 4 4 БЛИЖНИЙ ВОСТОК: САУДОВСКАЯ АРАВИЯ, ДЖОРДАН, ИРАК, ИРАН, ЕГИПЕТ,
Любой, кто может дать их вклад в то, как я могу настроить свой сценарий, чтобы предотвратить дублирование ключа региона. Был по этому вопросу в течение некоторого времени. Спасибо.