Можно ли создать представление Oracle с переменной bind? - PullRequest
1 голос
/ 02 апреля 2019

Я пытался создать представление (из двух разных таблиц), но я хочу отфильтровать результат, помещенный в мое представление, с помощью переменной bind.

Вот что я сделал:

dsn_test = cx_Oracle.makedsn(host='xxxxxx',port='1521',service_name='trtdiag')
con_test = cx_Oracle.connect(user='rtdiag', password='xxxxx',dsn=dsn_test)

cursor = con_test.cursor()

query = '''
CREATE OR REPLACE VIEW INFOS_VEHICLE AS
SELECT IPC_PRESENCE.VEHICLE_ID,IPC_PRESENCE.PRESENT_IWLAN,IPC_PRESENCE.PRESENT_2G3G,RT_SVOI.LAST_SVOI,RT_SVOI.ASSIGNED_DEPOT
FROM IPC_PRESENCE,RT_SVOI
WHERE (IPC_PRESENCE.VEHICLE_ID = RT_SVOI.VEHICLE_ID)
AND (IPC_PRESENCE.VEHICLE_ID = :vehicle)'''

create_view = cursor.execute (query,vehicle=8104)

Cx_oracle вызывает следующую ошибку:

Traceback (most recent call last):
  File "test_view.py", line 15, in <module>
    create_view = cursor.execute (query,vehicle=8104)
cx_Oracle.DatabaseError: ORA-01036: illegal variable name/number

Мой вопрос: возможно ли таким образом создать представление с переменной привязки или мне следует выполнить процедуру?

1 Ответ

0 голосов
/ 03 апреля 2019

К сожалению, это не возможно.Вместо этого вы должны создать представление без последнего предложения, а затем выполнить следующее в своем коде:

cursor.execute("select * from infos_vehicle where vehicle_id = :vehicle",
        vehicle=8104)
...