从 sql 提示导出特定的 oracle 包(规范和正文)
Export specific oracle packages (specification and body) from sql prompt
我们必须更改现有包,但在我们进行任何更改之前,我们需要备份 log/sql/text 文件中已经(现有)的包。
我只想备份那些我们将在发布期间更改的包。
我们没有 SQL 开发人员或任何 UI 工具。我们可以从 SQL 提示 运行。
假设用户有 3 个包 'usr33'
包名
usr33_pkg135
usr33_pkg234
usr33_pkg456
可能吗?
如果是,如何?
您可以通过dbms_metadata:
查询包的源代码
SELECT DBMS_METADATA.GET_DDL(object_type=> 'PACKAGE', name=> ?, schema=> ?) from dual
一个选择是使用DBMS_METADATA
包,比如
select dbms_metadata.get_ddl('PACKAGE', 'USR33_PKG135', 'USR33') result
from dual;
另一个是select来自USER_SOURCE
的文本:
select text from user_source where name = 'USR33_PKG135'
order by type, line;
我们必须更改现有包,但在我们进行任何更改之前,我们需要备份 log/sql/text 文件中已经(现有)的包。 我只想备份那些我们将在发布期间更改的包。 我们没有 SQL 开发人员或任何 UI 工具。我们可以从 SQL 提示 运行。
假设用户有 3 个包 'usr33' 包名 usr33_pkg135 usr33_pkg234 usr33_pkg456
可能吗? 如果是,如何?
您可以通过dbms_metadata:
查询包的源代码SELECT DBMS_METADATA.GET_DDL(object_type=> 'PACKAGE', name=> ?, schema=> ?) from dual
一个选择是使用DBMS_METADATA
包,比如
select dbms_metadata.get_ddl('PACKAGE', 'USR33_PKG135', 'USR33') result
from dual;
另一个是select来自USER_SOURCE
的文本:
select text from user_source where name = 'USR33_PKG135'
order by type, line;