Отправьте переменную типа строки в процедуру с помощью oracledbPython

Программы на Python
Anonymous
Отправьте переменную типа строки в процедуру с помощью oracledb

Сообщение Anonymous »

У меня есть пакет oracle ETL_RUN, в пакете есть процедура, которая объявлена ​​следующим образом:

Код: Выделить всё

procedure pRunTask(pTask in out nocopy TASK_RUN%rowtype)
Я пытаюсь вызвать процедуру из кода Python c, используя библиотеку oracledb:

Код: Выделить всё

cursor.callproc('ETL_RUN.pRunTask', [task_run])
Но я получаю сообщение об ошибке:

Код: Выделить всё

  File "...flows\migration_simple.py", line 48, in init
cursor.callproc('ETL_RUN.pRunTask', keyword_parameters={'pTask': task_run})
File "...venv\lib\site-packages\oracledb\cursor.py", line 651, in callproc
self._call(name, parameters, keyword_parameters)
File "...venv\lib\site-packages\oracledb\cursor.py", line 113, in _call
return self.execute(statement, bind_values)
File "...venv\lib\site-packages\oracledb\cursor.py", line 701, in execute
impl.execute(self)
File "src\\oracledb\\impl/thin/cursor.pyx", line 178, in oracledb.thin_impl.ThinCursorImpl.execute
File "src\\oracledb\\impl/thin/protocol.pyx", line 437, in oracledb.thin_impl.Protocol._process_single_message
File "src\\oracledb\\impl/thin/protocol.pyx", line 438, in oracledb.thin_impl.Protocol._process_single_message
File "src\\oracledb\\impl/thin/protocol.pyx", line 399, in oracledb.thin_impl.Protocol._process_message
File "src\\oracledb\\impl/thin/protocol.pyx", line 376, in oracledb.thin_impl.Protocol._process_message
File "src\\oracledb\\impl/thin/messages.pyx", line 314, in oracledb.thin_impl.Message.send
File "src\\oracledb\\impl/thin/messages.pyx", line 2162, in oracledb.thin_impl.ExecuteMessage._write_message
File "src\\oracledb\\impl/thin/messages.pyx", line 2096, in oracledb.thin_impl.ExecuteMessage._write_execute_message
File "src\\oracledb\\impl/thin/messages.pyx", line 428, in oracledb.thin_impl.MessageWithData._write_bind_params
File "src\\oracledb\\impl/thin/messages.pyx", line 1115, in oracledb.thin_impl.MessageWithData._write_bind_params_row
File "src\\oracledb\\impl/thin/messages.pyx", line 1081, in oracledb.thin_impl.MessageWithData._write_bind_params_column
File "src\\oracledb\\impl/thin/packet.pyx", line 809, in oracledb.thin_impl.WriteBuffer.write_dbobject
TypeError: object of type 'NoneType' has no len()
Ранее я получил переменную Task_run из другой функции Oracle.
Что я делаю неправильно ?

Подробнее здесь: https://stackoverflow.com/questions/787 ... g-oracledb

Вернуться в «Python»