ORA -06502 при динамическом выполнении процедуры - PullRequest
0 голосов
/ 22 октября 2018

В определенном коде мы используем dbms_sql для динамического выполнения процедуры.

Существует переменная, скажем, k, которую мы привязываем к выходному значению proc, скажем, ot1.

Мы делаем это следующим образом:

Dbms_sql.bind_variable ( cur , 'ot1', k, 2048) 

И затем выполняем процедуру следующим образом:

Dbms_output.execute(cur)

И получаем значение ot1 следующим образом:

Dbms_sql.variable_value(cur , 'ot1' , k) 

Ot1 имеет тип varchar2 и является выходным параметром для выполняемого процесса.

K также имеет тип varchar2.

При выполнении /при тестировании proc в db с теми же входными параметрами значение ot1 равно "300", но при динамическом выполнении, как упомянуто выше, я получаю ora-06502 при

Dbms_sql.variable_value( cur , 'ot1, k) 

для другихвводит значения наподобие «400», «250» и т. д., но в этих случаях эта ошибка не появляется ..

ora 06502 возникает, когда есть переполнение, но для выходного параметра varchar2это не может быть переполнением, так как значение составляет только 300 и такой ошибки нетВидно для значений 400, 500, 250

И это, я не чувствую, несоответствие типов, поскольку выходное значение может быть обработано как строка ... и такие ошибки не видны с другим выводомзначения типа «400» и «250».

В чем здесь проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...