Как создать хранимую процедуру в скрипте?
Ищу способ создать хранимую процедуру в Python скрипте.
Знаю, что cursor.callproc в модуле cx_oracle предназначена для вызова существующей хранимой процедуры, как например в этом топике.
А какой есть способ/метод создания хранимой процедуры?
Свободный перевод вопроса Create Oracle stored procedure in Python от участника @narayana kandukuri
Ответы (1 шт):
Просто вызывайте execute() с SQL предложением CREATE OR REPLACE PROCEDURE.
Чтобы проверить, скомпилировалась ли процедура, надо запросом проверить наличие ошибок в представлении user_errors:
from cx_Oracle import connect
conn = connect ('<connect string>', encoding="utf-8")
with conn.cursor () as cursor:
cursor.execute ("""create or replace procedure x (a in number) as begin BLAH end;""")
cursor.execute ("""
select name, type, line, position, text
from user_errors
where name = 'X'
order by name, type, line, position""")
rows = cursor.fetchall ()
print (rows)
Вывод:
[('X', 'PROCEDURE', 1, 41,
'PLS-00103: Encountered the symbol "END" when expecting one of the following:
\n\n := . ( @ % ;\nThe symbol ";" was substituted for "END" to continue.\n')]
Мы уже работаем над тем, как в будущих версиях cx_Oracle напрямую обрабатывать флаг success with info и сообщения об ошибках компиляции.
Свободный перевод ответа от участника @Christopher Jones