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 Package и Package Body, DBA_IDENTIFIERS
должны заполняться.
Мы что-то упустили? Любые входы будут очень полезны.
-------------------Updated с модифицированной версией Python code---------------
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()
Я предлагаю проверить, не использует ли библиотека, которую вы используете для подключения к Oracle DB, не переопределяет DB plscope_settings.
Если да, то вы должны добавить:
ALTER SESSION SET plscope_settings = 'IDENTIFIERS:ALL;