Я получаю довольно странное поведение при вызове функции oracle instr, или, возможно, я достаточно слеп, чтобы не видеть мою глупую ошибку.PL SQL oracle instr function | аномальное поведение
На самом деле я написал процедуру разделения строки. Например, если у нас есть строка
а, е, я, о, у
тогда мой раскол метод будет выглядеть
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
Вы можете разместить отверстие mehtod 'string_split'. Я не знаю, как вы определяете 'total_element'! – Tim
Что касается того, почему вы получаете исключение: я также подозреваю 'total_elements' - попытаюсь удалить его и посмотреть, получилось ли вы исключение. Что касается того, почему второй работает (без «исключения большого времени»): 3-й и 4-й аргументы в 'instr' являются необязательными, поэтому он, вероятно, неявно вводит' 1' в строку ''1'' (если вы будете иметь '1' в вашем' temp_string_to_split', вы, вероятно, получите индекс первого появления) –
ORA-06512: «** Причина: ** Обратное обратное сообщение как стек разматывается необработанными исключениями». [1] Помимо предоставления тестового примера с вашей проблемой или кода для разделения строки, пожалуйста, предоставьте полную трассировку стека из этой ошибки. Примечание 1: http://docs.oracle.com/cd/E11882_01/server.112/e17766/e4100.htm#sthref2109 –