Я получаю довольно странное поведение при вызове функции oracle instr, или, возможно, я достаточно слеп, чтобы не увидеть свою глупую ошибку.
На самом деле я написал процедуру для разделения строки. Например, если у нас есть строка
а, е, я, о, и
тогда мой метод разбиения будет выглядеть как
string_split('a,e,i,o,u',',',5);
где первый параметр - строка для разделения, второй - разделитель, а третий - количество элементов, которые я знаю после разделения.
Теперь из числа вещей моя процедура вызывает
start_index := instr(temp_string_to_split,',',1,(total_element-i));
Но в тот момент, когда он вызывается, я получаю
ORA-06512 ,numeric or value error
Но если я призову
start_index := instr(temp_string_to_split,1,(total_element-i));
процедура выполняется, хотя и нежелательно. Обратите внимание, что во втором вызове параметр разделителя отсутствует, и непосредственно передается число как второй параметр, который, я думаю, должен был вызвать исключение большого времени. Но на удивление все идет и работает нормально.
Может кто-нибудь объяснить эту аномалию ... или помочь мне увидеть, если я что-то упустил.
Спасибо,
Mawia