我想以编程方式将我的过程/函数和包导出到单独的文件(作为备份)并使用Oracle9.2。
我找到的最接近的解决方案是使用dbms_metadata.get_ddl,但是如何将clob输出到文本文件中,而不丢失任何部分(由于长度或缩进)?
或者,您是否有其他的解决方案来单独备份包或其他功能(只有一个我想要的,不是所有的)?
谢谢
最佳答案
试图从命令行实用程序(如sql*plus)获取clob(和long)似乎总是给我带来格式化/截断问题。我的解决方案是用一种非类型检查语言(Perl)编写一个简单的实用程序,该语言使用DBMS_METADATA
将CLOB带回到字符串中。
代码段:
…
$sthRef = $dbhRef->prepare("select dbms_metadata.get_ddl(?,?) from dual");
$sthRef->execute('PACKAGE', $thisName);
while (($thisDDL) = $sthRef->fetchrow()) {
print $thisDDL;
}
$sthRef->finish;
…