Да, в PL / SQL возможно много вещей, но в целом, если вы можете сделать это в SQL, не изобретайте встроенную функциональность, используя процедурный подход (регулярное выражение, как прокомментировал OMG Ponies, вероятно, было бы хорошим подходом здесь).).
Тем не менее, если вы действительно хотели бы перебирать строковый символ по символу, вы, вероятно, можете сделать что-то вроде:
declare
in_string varchar2(20) := 'Im a string';
in_length number;
cnt number := 0;
in_char char(1);
begin
in_length := length(in_string);
while (cnt < in_length)
loop
cnt := cnt + 1;
in_char := substr(in_string, cnt, 1);
-- do something wonderful here
end loop;
exception
when others then raise;
end;
Но опять же, донне делайте этого для ввода строки в верхний регистр (например), если вы можете просто использовать функцию UPPER;)
Надеюсь, это поможет.