Вопрос

Я пытаюсь сделать это снова 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'>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top