Oracle 12cR1
Python 3.5
plscope_settings = IDENTIFIERS:ALL
Требование: У нас есть требование идентифицировать начальную и конечную строки подпрограмм внутри данного пакета Oracle.
Дизайн: Для этого мы используем DBA_IDENTIFIERS
.Параметр базы данных PLSCOPE_SETTINGS
уже установлен на IDENTIFIERS:ALL
.Чтобы заполнить идентификаторы для данного пакета Oracle, мы берем последнюю версию пакета Oracle у нашего менеджера версий кода и компилируем ее в базу данных разработки.Компиляция выполняется с использованием Python 3.5
скриптов.
Результат получен: После компиляции, DBA_OBJECTS
показать этот пакет Oracle с STATUS
как VALID
.Таким образом, пакет успешно скомпилирован.Тем не менее, DBA_IDENTIFIERS
не заполняется ни для какого конкретного пакета Oracle.Когда тот же пакет Oracle компилируется вручную в Oracle SQL Developer
, DBA_IDENTIFIERS
заполняется.
Ожидаемый результат: Когда скрипт Python компилирует файлы SQL, содержащие пакет Oracle и тело пакета, DBA_IDENTIFIERS
должно быть заселено.
Мы что-то здесь упускаем?Любые входные данные будут очень полезны.
------------------- Обновлено с измененной версией кода Python ---------------
import cx_Oracle as ora
conn = ora.connect("myuser/mypwd@myservice")
cur = conn.cursor()
with open("/fodler1/folder2/pkh/mypkg.sql","r") as sqlFile:
sql = sqlFile.read()
cur.execute(sql)
with open("/fodler1/folder2/pkb/mypkg.sql","r") as sqlFile:
sql = sqlFile.read()
cur.execute(sql)
cur.close()
conn.close()