ORA-01422 - точная выборка возвращает ошибку, превышающую запрошенное количество строк
Я новичок в написании PL/SQL. У меня есть этот маленький код, но я не могу распечатать вывод из-за ошибки субъекта.
declare
output_tour_id varchar(4000);
begin
dbms_output.enable;
for r in
(
SELECT TOUR_ID FROM "/DSD/HH_RADELHD"
VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP('2015-04-02 18:00:00','YYYY-MM-DD HH24:MI:SS')
AND TO_TIMESTAMP('2015-04-02 18:30:00','YYYY-MM-DD HH24:MI:SS')
WHERE VERSIONS_OPERATION = 'D'
group by VERSIONS_STARTTIME, CLIENT, TOUR_ID
)
Loop
@/tmp/get.sql r.tour_id;
DBMS_OUTPUT.PUT_LINE (output_tour_id);
end loop;
end;
/
Я получаю эту ошибку после выполнения:
old 30: WHERE CLIENT = 100 and TOUR_ID = &1;
new 30: WHERE CLIENT = 100 and TOUR_ID = r.tour_id;
'100','100002039690','000001','0001398563','0050543675','10','C170','20150402070750','CET','1',' ','10',' ','91597','20150330',' ',
declare
*
ERROR at line 1:
ORA-01422: exact fetch returns more than requested number of rows
ORA-06512: at line 13
Ваш вклад будет высоко оценен. Заранее спасибо.
Как заставить мой код работать правильно?
1 ответ
Ошибка в вашем скрипте get.sql. Ваш SELECT INTO
Оператор в этом скрипте возвращает более 1 строки. Вы можете попробовать использовать SELECT DISTINCT
и / или добавить еще WHERE
условие для ограничения результирующего набора.