Как передавать данные процедуре oracle

у меня есть процедура, которая принимает на вход параметр типа number начало процедуры выглядит так - proc_data(id_row in number) .....

в соответствии с id_row у меня разная логика update-ов

я заметила, что если я вызываю процедуру, таким образом begin proc_data('5'); end;

то есть передаю строку, то oracle принимает это и обрабатывает данные/

так же я могу вызвать процедуру и таким образом, то есть явно передаю integer begin proc_data(5); end;

а вот если передаю не число begin proc_data('dsfsd'); end; То соответственно ошибка.

Получается oracle неважно передаю я строку или целое число, он потом сам преобразует значение к целому числу и если это у него получается, то он идет далее по процедуре. Или все же необходимо в точности передавать тот тип данных, который объявлен?

Это мой первый вопрос, если я что-то написала неправильно или непонятно, отпишитесь в комментариях, как мне улучшить вопрос


Ответы (1 шт):

Автор решения: boogili

Лучше передавать тот тип, который объявлен в процедуре. Если необходимо избежать ошибок преобразования, то можно использовать конструкцию вида TO_NUMBER('dsfsd' DEFAULT 0 ON CONVERSION ERROR)

→ Ссылка