cx_Oracle и выходные переменные - PullRequest
7 голосов
/ 23 апреля 2010

Я пытаюсь сделать это снова в базе данных 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_Oracleтаким образом?

1 Ответ

7 голосов
/ 23 апреля 2010

Да, вы можете делать анонимные блоки 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'>
...