Pregunta

Estoy tratando de hacer esto de nuevo una base de datos Oracle 10:

cursor = connection.cursor()
lOutput = cursor.var(cx_Oracle.STRING)
cursor.execute("""
            BEGIN
                %(out)s := 'N';
            END;""",
            {'out' : lOutput})
print lOutput.value

Pero estoy

DatabaseError: ORA-01036: illegal variable name/number

¿Es posible definir PL / SQL bloques en cx_Oracle esta manera?

¿Fue útil?

Solución

Sí, se puede hacer anónimos PL / SQL bloques. Su variable de vinculación para el parámetro de salida no está en el formato correcto. Debe ser :out en lugar de %(out)s

cursor = connection.cursor()
lOutput = cursor.var(cx_Oracle.STRING)
cursor.execute("""
            BEGIN
                :out := 'N';
            END;""",
            {'out' : lOutput})
print lOutput

¿Qué produce la salida:

<cx_Oracle.STRING with value 'N'>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top