При условии, что вы не заботитесь о сохранении выходных данных, это можно сделать довольно просто, без необходимости рекурсии:
SQL> select
2 translate(
3 initcap('newyork is a BEAUTIFUL city')
4 , 'ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz'
5 , 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
6 )
7 from dual
8 /
TRANS
-----
NIABC
SQL>
Если предложение содержит цифры, знаки препинания и т. Д., То мы должны добавить эти символы в первую замещающую строку, что может быть довольно утомительным.