Как предотвратить ошибку ORA-00900 при запуске Oracle SQL запроса разработчика с использованием pandas .read_ sql ()? - PullRequest
0 голосов
/ 09 июля 2020

Ниже приведен пример запроса SQL Developer, который я хотел бы запустить из 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'. Что я могу сделать, чтобы решить эту проблему?

1 Ответ

1 голос
/ 09 июля 2020
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})
...