سؤال

أحاول القيام بذلك مرة أخرى قاعدة بيانات Oracle 10:

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

هل من الممكن تحديد كتل PL/SQL في CX_ORACLE بهذه الطريقة؟

هل كانت مفيدة؟

المحلول

نعم ، يمكنك عمل كتل PL/SQL مجهولة. متغير الربط الخاص بك لمعلمة الإخراج ليس بالتنسيق الصحيح. يجب أن يكون :out بدلاً من %(out)s

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

الذي ينتج الإخراج:

<cx_Oracle.STRING with value 'N'>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top