我想以编程方式将我的过程/函数和包导出到单独的文件(作为备份)并使用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;

08-07 06:14