Domanda

Sto cercando di farlo di nuovo un database Oracle 10:

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

ma mi sto

DatabaseError: ORA-01036: illegal variable name/number

E 'possibile definire i blocchi PL / SQL in cx_Oracle questo modo?

È stato utile?

Soluzione

Sì, si può fare blocchi anonimi PL / SQL. La variabile si legano per il parametro di output non è nel formato corretto. Dovrebbe essere :out invece di %(out)s

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

che produce l'uscita:

<cx_Oracle.STRING with value 'N'>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top