Есть ли способ получить подпись хранимой процедуры?

#python #oracle #cx-oracle

#python #Oracle #cx-oracle

Вопрос:

Допустим, у нас есть процедура Oracle:

 procedure proc(i_value in number, o_value out varchar2) is
begin 
    null;
end proc;
  

Выходные значения, которые передаются callproc() функции, должны быть инициированы одним из типов Oracle ( cx_Oracle.NUMBER и cx_Oracle.STRING т.д.) .

В нашем случае переменная, скажем, с именем out_value , будет получена o_value из процедуры и перед передачей должна быть определена следующим образом:

 out_value = cur.var(cx_Oracle.STRING)
  

Это нормально, если мы знаем сигнатуру процедуры. Но что, если нет?

Есть ли способ получить типы выходных значений процедуры перед ее вызовом?

Ответ №1:

Вам нужно будет запросить представления «словаря данных», такие как USER_PROCEDURES и USER_ARGUMENTS. В cx_Oracle нет встроенного API ‘describe PL / SQL’.