Question

Je suis en train de faire à nouveau une base de données Oracle 10:

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

mais je reçois

DatabaseError: ORA-01036: illegal variable name/number

Est-il possible de définir des blocs PL / SQL dans cx_Oracle cette façon?

Était-ce utile?

La solution

Oui, vous pouvez faire des blocs anonymes PL / SQL. Votre variable bind pour le paramètre de sortie ne sont pas dans le bon format. Il devrait être :out au lieu de %(out)s

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

Ce qui produit la sortie:

<cx_Oracle.STRING with value 'N'>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top