Чувство инстинкта - вам, возможно, придется опуститься ниже уровня SQLAlchemy, возможно, до базовых классов cx_oracle.
Из ответа, предоставленного Герхардом Херингом на другом форуме:
import cx_Oracle
con = cx_Oracle.connect("me/secret@tns")
cur = con.cursor()
outcur = con.cursor()
cur.execute("""
BEGIN
MyPkg.MyProc(:cur);
END;""", cur=outcur)
for row in out_cur:
print row
Я бы предположил, что, поскольку SQLAlchemy использует скрытый cx_oracle, должен быть какой-то способ использовать те же соединения в пуле.
Есть ли возможность обернуть вашу функцию, возвращающую REF CURSOR, в представлении на стороне Oracle??(При условии, что форма REF CURSOR не изменяется, и вы можете каким-то образом получить правильные параметры в вашей функции - возможно, вставив их в качестве переменных сеанса или во временную таблицу, это должно работать - я использовал этот подходдля извлечения данных из функции REF CURSOR на язык, который поддерживает только ограниченный набор функций Oracle).