2010-04-23 8 views
7

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

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

mais je suis obtenir

DatabaseError: ORA-01036: illegal variable name/number 

Est-il possible de définir des blocs PL/SQL dans cx_Oracle par ici?

Répondre

7

Oui, vous pouvez créer des blocs PL/SQL anonymes. Votre variable de liaison pour le paramètre de sortie n'est pas au format correct. 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 

qui produit la sortie:

<cx_Oracle.STRING with value 'N'> 
+0

Un grand merci ... Je pensais que nous avions essayé cette combinaison particulière à un moment donné, mais il faut l'avoir manqué! – Tim

+0

Comment puis-je le changer si j'utilise cursor.callproc ("SOME_PROC ', [lOutput]) –

Questions connexes