是否可以使用绑定变量创建 Oracle 视图?

Is it possible to create an Oracle view with bind variable?

我试图创建一个视图(来自两个不同的表),但我想使用绑定变量过滤放置在我的视图中的结果。

这是我所做的:

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

我的问题:是否可以通过这种方式创建带有绑定变量的视图,或者我应该执行一个过程吗?

很遗憾,不是不可能。相反,您将创建没有最后一个子句的视图,然后在您的代码中执行以下操作:

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