cx_oracle и выходные переменные
Вопрос
Я пытаюсь сделать это снова Oracle 10 базу данных:
cursor = connection.cursor()
lOutput = cursor.var(cx_Oracle.STRING)
cursor.execute("""
BEGIN
%(out)s := 'N';
END;""",
{'out' : lOutput})
print lOutput.value
Но я получаю
DatabaseError: ORA-01036: illegal variable name/number
Можно ли определить блоки PL / SQL в CX_ORCACLE таким образом?
Решение
Да, вы можете сделать анонимные блоки PL / SQL. Ваша переменная связывания для выходного параметра не находится в правильном формате. Так должно быть :out
вместо %(out)s
cursor = connection.cursor()
lOutput = cursor.var(cx_Oracle.STRING)
cursor.execute("""
BEGIN
:out := 'N';
END;""",
{'out' : lOutput})
print lOutput
Который производит вывод:
<cx_Oracle.STRING with value 'N'>
Не связан с StackOverflow