运行 Oracle SQL 开发人员查询使用 pandas.read_sql() 时如何防止 ORA-00900 错误?

How to prevent ORA-00900 error when running Oracle SQL Developer query using pandas.read_sql()?

下面是一个 SQL 开发人员查询的示例,我想 运行 来自 Python。

sqlQuery = """
DEFINE a = 1
DEFINE b = 2

select &&a + &&b from dual
"""
result = pandas.read_sql(sql=sqlQuery, con=Oracle_Connection) 

当我在 SQL Developer 中 运行 时,此查询有效,但是当我 运行 Python 中的上述代码时,我收到以下错误:'ORA-00900: invalid SQL statement'。我可以通过简单的修复来解决这个问题吗?

DEFINE a = 1
DEFINE b = 2

DEFINE 是SQL*Plus 或SQLDeveloper 的命令,不是SQL 命令。 您需要改用绑定变量:

select :a + :b from dual;

完整示例:

sqlQuery = """
select :a + :b from dual
"""
result = pandas.read_sql(sql=sqlQuery, con=Oracle_Connection, params={'a': 1, 'b': 2})