Я бы предложил вам использовать проверку, тип которой является функцией , которая возвращает логическое значение и выглядит следующим образом:
return regexp_like(:P1_ITEM_NAME, '^[A-Za-z -]+$');
Что это делает?
^
привязывается к началу строки A-Z
принимает заглавные буквы a-z
принимает строчные буквы space
is ..... ну, пробел -
- это ... ну, дефис +
- повторять эти символы много раз $
привязан кконец строки
Например:
SQL> with test (item) as
2 (select 'aBCd' from dual union -- ok
3 select 'little foot' from dual union -- ok
4 select 'reb-ecca' from dual union -- ok
5 select 'lit123foot' from dual union -- wrong
6 select 'abc$3' from dual union -- wrong
7 select 'xy.)z' from dual union -- wrong
8 select '123-234' from dual -- wrong
9 )
10 select item
11 from test
12 where regexp_like(item, '^[A-Za-z -]+$');
ITEM
-----------
aBCd
little foot
reb-ecca
SQL>