Точная выборка Oracle возвращает больше запрошенного количества строк - PullRequest
0 голосов
/ 26 июня 2018

Когда я запускаю обычный SQL-запрос к оракулу:

select name from table;

Я получаю желаемый результат.

Когда я запускаю его как pl / sql, я получаю сообщение об ошибкеORA-01422: exact fetch returns more than requested number of rows:

declare
l_name VARCHAR(200);

begin
select name into l_name from table;
end;

Я понимаю, что ошибка говорит мне, что я пытаюсь вставить больше строк в l_name, но как мне сделать l_name динамическим, так как поиск будет почти всегда возвращает более 1 результата.

Причина, по которой используется pl / sql, заключается в том, что мне нужно показать список элементов, основанных на поиске, так как http в Oracle Apex и обычный код SQL не может этого сделать.

htp.p('Names found: '||TO_CHAR(l_name));

1 Ответ

0 голосов
/ 26 июня 2018

Вы можете использовать цикл for.Вот пример (очень грубый), который позволяет перебирать все совпадающие строки и печатать каждое имя с точкой с запятой.

htp.prn('Names found: ');    
for my_data in (select name from table) loop
    htp.prn(to_char(my_data.name) || '; ');
end loop;
htp.p(''); -- newline
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...