浅谈如何将Oracle导出到XML文件

浅谈如何将Oracle导出到XML文件,第1张

以下 *** 作在

Oracle9i

、10g版本成功步骤一:创建存放XML文件的目录对象SQL>createorreplacedirectoryexp_diras'/opt'/--注意此目录要有oracle用户的写权限步骤二:创建过程生成

xml文件

的主过程SQL>createorreplaceproceduretable2xml(result

inoutnocopyclob,

在oracle中提供了许多内置的程序包,它们用于扩展数据库的功能。在开发应用程序时,可以利用这些程序包。数据库用户sys拥有oracle提供的所有程序包。他们被定义为共有同义词,并将执行权限授予了public用户组,任何用户都可以访问它们。其中DBMS_XMLQUERY包用于将查询结果转换为XML格式,DBMS_LOB程序包包含雨处理大型对象的过程和函数。下面我们看一下DBMS_XMLQUERY和DBMS_LOB的用法:

SQL>DECLARE

result CLOB

xmlstr VARCHAR2(32767)

line VARCHAR2(2000)

line_no INTEGER :=1

BEGIN

result :=DBMS_XMLQUERY.getXml('select empno,empname from employee')

xmlstr :=DBMS_LOB.SUBSTR(result,32767)

LOOP

EXIT WHEN xmlstr IS NULL

line :=SUBSTR(xmlstr,1,INSTR(xmlstr,CHR(10)-1))

DBMS_OUTPUT.PUT_LINE(line_no || ':' || line)

xmlstr :=SUBSTR(xmlstr,INSTR(xmlstr,CHR(10)+1))

line_no :=line_no + 1

END LOOP

END

在上面的例子中我们声明了一个CLOB数据类型的result变量,以及VARCHAR2类型的xmlstr和line两个变量。其中,getXml函数用于将查询结果转换为XML格式,SUBSTR函数检索子字符串,32767值指定要从CLOB数据类型读取的最大字节数。检索到的字符串存储xmlstr变量中。LOOP块循环执行,每次从xmlstr中读取一行。INSTR函数返回一个字符串在另一个字符串首次出现的位置。在此,该函数返回换行符在字符串中的位置,直到遇到下一行。

大家觉得例子的结果能不能读出我们预期的结果呢?试试就知道了!!!

结果如下:

<?xml version='1.0'?>

<ROWSET>

<ROW num="1">

<EMPNO>E001</EMPNO>

<EMPNAME>Jane</EMPNAME>

</ROW>

<ROW num="2">

<EMPNO>E002</EMPNO>

<EMPNAME>John</EMPNAME>

</ROW>

<ROW num="3">

<EMPNO>E003</EMPNO>

<EMPNAME>Joe</EMPNAME>

</ROW>

</ROWSET>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12051866.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存