oracle数据解析成xml文件,再从xml存入oracle,请问使用哪种语言做接口呢,我很迷茫
2个回答
展开全部
通过配置本地数据库的tns配置文件实现:
去oracle安装目录下oracle\product\10.2.0\db_2\NETWORK\ADMIN\ 找到tnsnames.ora,用记事本打开,里边有远程数据库的tns连接配置串如下
ORCL23 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.23)(PORT = 1521))
)
(CONNECT_DATA =
(SID = ORCL)
)
)
添加好ip、端口和目标数据库的实例名(SID),然后确保tns名称(ORCL23)在整个文档中唯一,保存后打开数据库连接工具,输入远程数据库上的用户名密码,选择数据库对象为你配置的连接名就可以了
去oracle安装目录下oracle\product\10.2.0\db_2\NETWORK\ADMIN\ 找到tnsnames.ora,用记事本打开,里边有远程数据库的tns连接配置串如下
ORCL23 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.23)(PORT = 1521))
)
(CONNECT_DATA =
(SID = ORCL)
)
)
添加好ip、端口和目标数据库的实例名(SID),然后确保tns名称(ORCL23)在整个文档中唯一,保存后打开数据库连接工具,输入远程数据库上的用户名密码,选择数据库对象为你配置的连接名就可以了
展开全部
一 查询语句的结果转换成XML
1 创建函数用于转换
CREATE OR REPLACE FUNCTION get_query_xml (
q_string IN VARCHAR2, --查询语句
p_rowtag IN VARCHAR2 DEFAULT NULL --XML标签
)
RETURN CLOB
IS
ctx NUMBER;
xmldoc CLOB;
page NUMBER := 0;
xmlpage BOOLEAN := TRUE;
refcur sys_refcursor;
BEGIN
OPEN refcur FOR q_string;
ctx := DBMS_XMLGEN.newcontext (refcur);
DBMS_LOB.createtemporary (xmldoc, TRUE);
IF NOT (p_rowtag IS NULL)
THEN
DBMS_XMLGEN.setrowtag (ctx, p_rowtag);
END IF;
xmldoc := DBMS_XMLGEN.getxml (ctx, DBMS_XMLGEN.NONE);
DBMS_XMLGEN.closecontext (ctx);
RETURN xmldoc;
END;
2 调用此函数生成XML
select get_query_xml('SELECT ITEM,SHORT_DESC FROM ITEM_MASTER WHERE ITEM_PARENT = ''300010571'' ','DATA') from dual;
二 解析XML 数据
SELECT * FROM XMLTABLE('$B/ROWSET/DATA' PASSING
XMLTYPE('<?xml version="1.0"?>
<ROWSET>
<DATA>
<ITEM>500000000</ITEM>
<SHORT_DESC>162139802</SHORT_DESC>
</DATA>
</ROWSET>
') AS B
COLUMNS item VARCHAR2(500) PATH '/DATA/ITEM',
short_desc VARCHAR2(500) PATH '/DATA/SHORT_DESC'
)
1 创建函数用于转换
CREATE OR REPLACE FUNCTION get_query_xml (
q_string IN VARCHAR2, --查询语句
p_rowtag IN VARCHAR2 DEFAULT NULL --XML标签
)
RETURN CLOB
IS
ctx NUMBER;
xmldoc CLOB;
page NUMBER := 0;
xmlpage BOOLEAN := TRUE;
refcur sys_refcursor;
BEGIN
OPEN refcur FOR q_string;
ctx := DBMS_XMLGEN.newcontext (refcur);
DBMS_LOB.createtemporary (xmldoc, TRUE);
IF NOT (p_rowtag IS NULL)
THEN
DBMS_XMLGEN.setrowtag (ctx, p_rowtag);
END IF;
xmldoc := DBMS_XMLGEN.getxml (ctx, DBMS_XMLGEN.NONE);
DBMS_XMLGEN.closecontext (ctx);
RETURN xmldoc;
END;
2 调用此函数生成XML
select get_query_xml('SELECT ITEM,SHORT_DESC FROM ITEM_MASTER WHERE ITEM_PARENT = ''300010571'' ','DATA') from dual;
二 解析XML 数据
SELECT * FROM XMLTABLE('$B/ROWSET/DATA' PASSING
XMLTYPE('<?xml version="1.0"?>
<ROWSET>
<DATA>
<ITEM>500000000</ITEM>
<SHORT_DESC>162139802</SHORT_DESC>
</DATA>
</ROWSET>
') AS B
COLUMNS item VARCHAR2(500) PATH '/DATA/ITEM',
short_desc VARCHAR2(500) PATH '/DATA/SHORT_DESC'
)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询