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_标识符
不会为任何给定的Oracle包填充。当手动编译同一个Oracle包时
Oracle SQL Developer
,
DBA_标识符
正在填充。
预期结果:
当python脚本编译包含Oracle包和包体的SQL文件时,
DBA_标识符
必须填充。
我们这里缺东西了吗?任何输入都将非常有用。
------------用修改后的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()