Переменные привязки исключений с помощью cx_Oracle в python

1

Хорошо, поэтому я подключен к базе данных оракула в python 2.7 и cx_Oracle 5.1, скомпилированной против мгновенного клиента 11.2. У меня есть указатель на базу данных, и запуск SQL не является проблемой, за исключением этого:


    cursor.execute('ALTER TRIGGER :schema_trigger_name DISABLE',
                     schema_trigger_name='test.test_trigger')

или


    cursor.prepare('ALTER TRIGGER :schema_trigger_name DISABLE')
    cursor.execute(None,{'schema_trigger_name': 'test.test_trigger'})

оба приводят к ошибке от oracle:


    Traceback (most recent call last):
      File "connect.py", line 257, in 
        cursor.execute('ALTER TRIGGER :schema_trigger_name DISABLE',
                    schema_trigger_name='test.test_trigger')
    cx_Oracle.DatabaseError: ORA-01036: illegal variable name/number

Во время бега:


    cursor.execute('ALTER TRIGGER test.test_trigger DISABLE')

работает отлично. Какая проблема связана с привязкой этой переменной?

Теги:
cx-oracle

2 ответа

2
Лучший ответ

В вашем примере test.test_trigger - это не переменная, а объект. Вы можете связывать только переменные (которые могут быть заменены значением).

Запрос, который вы пытаетесь запустить, будет логически эквивалентен:

ALTER TRIGGER 'test.test_trigger' DISABLE

Привязка в этом случае не будет работать, вам придется строить запрос динамически.

  • 0
    Твой ответ лучше!
  • 0
    Ах хорошо. Это пометит это как строку. Спасибо за помощь
0

Обычно вы не можете привязывать имя объекта в Oracle. Для переменных он будет работать, но не для trigger_names, table_names и т.д.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню