Я работаю над заданием, целью которого является написание процедуры, которая имеет 2 ввода: строку и символ и удаляет символ из строки.
Пример: RemoveAll (123-456-789, '- ') выведет: 123456789.
create or replace procedure MyRemoveAll
(p_text varchar2, p_char_1 char) as
v_temp varchar2(100);
BEGIN
v_temp := p_text;
WHILE instr(v_temp, p_char_1) != 0 LOOP
v_temp := substr(v_temp, 1, instr(v_temp, p_char_1)-1)
|| substr(p_text, instr(v_temp, p_char_1)+1);
END LOOP;
dbms_output.put_line (v_temp);
END;
/
exec MyRemoveAll('123456789', '*');
exec MyRemoveAll('123-456789', '-');
exec MyRemoveAll('123*456*789', '*');
Я не получаю никаких ошибок при создании процедуры, и первые два выполнения работают правильно.Я пытался просто запустить: dbms_output.put_line (instr (123 * 456 * 789, *));
Что дало мне вывод 4. Поэтому он должен регистрироваться для условия цикла while, но SQL Plus просто останавливается в цикле.(Как будто это делает бесконечный цикл, но это не так).
У кого-нибудь есть идеи?