Почему моя функция sqlplus печатает несколько повторяющихся чисел, когда я хочу, чтобы она печаталась только один раз - sqlplus - PullRequest
0 голосов
/ 28 апреля 2020
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 БЛИЖНИЙ ВОСТОК: САУДОВСКАЯ АРАВИЯ, ДЖОРДАН, ИРАК, ИРАН, ЕГИПЕТ,

Любой, кто может дать их вклад в то, как я могу настроить свой сценарий, чтобы предотвратить дублирование ключа региона. Был по этому вопросу в течение некоторого времени. Спасибо.

...