如果一个用户更改了过程的源代码,我想找到新版本和旧版本过程之间的差异,并将它们保存到表格中。
换句话说,我想找到添加,修改或删除的行。
我尝试使用带有“在架构上的ddl之前”的触发器,然后比较all_source视图中的源代码和函数ORA_SQL_TXT(sql_text)给出的源代码,但这不起作用,因为函数给出的源代码ORA_SQL_TXT(sql_text)未按行号排序。
答案 0 :(得分:1)
使用SELECT .. FROM USER_SOURCES AS OF TIMESTAMP(time you want) WHERE ... ORDER BY LINE;
。这将按照之前的时间给出表格,您可以使用MINUS
或将其放入另一个表格中并执行您想要的任何操作。
它只保存最近的更改(取决于某些设置),但这是一个绝对精彩的功能,可以做一个小错误。