Как запустить EXEC dbms_stats.init_package () с помощью cx_Oracle - PullRequest
0 голосов
/ 04 июля 2018

Я пытался: код:

import cx_Oracle
conn = cx_Oracle.connect('xyz/xyz@xyz:1521/orcl')             
cur = conn.cursor()  
query = 'EXEC dbms_stats.init_package\(\)'                                     
cur.execute(query) 

также

query = 'EXEC dbms_stats.init_package()'                                     
cur.execute(query)

для обеих попыток я получаю следующую ошибку:

Ошибка: cx_Oracle.DatabaseError: ORA-00900: invalid SQL statemen t

Подскажите, пожалуйста, правильный способ запуска этой команды SQL

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Вы можете вызвать хранимую процедуру с помощью callproc.

cur.callproc("DBMS_STATS.INIT_PACKAGE")

Подробности здесь

0 голосов
/ 04 июля 2018

EXEC - это команда sqlplus, используйте BEGIN..END вместо

proc='''BEGIN
 dbms_stats.init_package();
 END;'''
cur.execute(proc);
...