У меня нет 9i для тестирования, но, возможно, это обойдется:
заменить:
SELECT REPLACE(ls_string,'bob')
INTO ls_temp FROM dual;
с:
ls_temp := REPLACE(ls_string,'bob');
Движок СУБД поддерживает только VARCHAR2 длиной до 4000, в то время как PL / SQL поддерживает до 32767. Избегайте обращения к базе данных для операции REPLACE (в любом случае это не нужно), и, похоже, она работает (по крайней мере, с 10g) .