2010-04-23 11 views
7

मैं यह फिर से एक Oracle 10 डेटाबेस करने के लिए कोशिश कर रहा हूँ:cx_Oracle और आउटपुट चर

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 

हो रही है यह cx_Oracle में PL/SQL ब्लॉक परिभाषित करने के लिए संभव है इस तरफ?

उत्तर

7

हां, आप अनाम पीएल/एसक्यूएल ब्लॉक कर सकते हैं। आउटपुट पैरामीटर के लिए आपका बाइंड वैरिएबल सही प्रारूप में नहीं है।

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

बहुत धन्यवाद ... मैंने सोचा था कि हम करने की कोशिश की थी कि कुछ बिंदु पर विशेष संयोजन, लेकिन हम इसे याद किया गया होगा: यह :out बजाय %(out)s

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

कौन सा उत्पादन का उत्पादन होना चाहिए! – Tim

+0

अगर मैं कर्सर.callproc ("SOME_PROC ', [lOutput] का उपयोग करता हूं तो मैं इसे कैसे बदल सकता हूं) –

संबंधित मुद्दे