我正在尝试读取JDBC调用过程的输出并将其解析并将其映射到下一个活动,
我创建了一个类似于在unresolvedResultSets中接收到的输出的架构,并将parseXML放在JDBC调用过程之后。
当我运行它时,我可以在parseXML中看到输出(我已经取消了验证输出)
,然后将元素ResultSets \ resuletSet1 \ Record1 \ ID映射到mapper。 但是,它无法从parseXML的输出中读取ID并传递空值作为输入。
可能是什么问题? 看来这是一个简单的任务,但由于一些愚蠢的问题,我仍然感到震惊。 我在这里想念什么?
请帮助
谢谢, 戈帕尔
我尝试将映射元素作为ResultSets \ resuletSet1 [1] \ Record1 [1] \ ID传递,仍然出现问题
答案 0 :(得分:0)
您需要创建模式
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:element name="Resultsets">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ResultSet1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Record1" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="PROCEDURE_OUTPUT_COLUMN1" type="xsd:string" nillable="true" minOccurs="0"/>
<xsd:element name="PROCEDURE_OUTPUT_COLUMN2" type="xsd:string" nillable="true" minOccurs="0"/>
<xsd:element name="PROCEDURE_OUTPUT_COLUMN2" type="xsd:string" nillable="true" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
请注意,元素名称“ PROCEDURE_OUTPUT_COLUMN1”,“ PROCEDURE_OUTPUT_COLUMN2” ...应与过程输出名称完全相同。
过程示例(ORACLE)
create or replace PROCEDURE "GET_COLUMNS" (
p_recordset OUT SYS_REFCURSOR
) AS
sql_stmt VARCHAR2 (32600);
BEGIN
sql_stmt :=
BEGIN
OPEN p_recordset FOR sql_stmt;
EXCEPTION WHEN OTHERS THEN
p_sql := 'ERROR in the SQL statment: ' || sql_stmt;
END;
END GET_COLUMNS;
然后您可以将过程输出映射到ParseXML
您可能还需要使用本机数据库驱动程序而不是tibco驱动程序
另请参阅How to parse unresolved result set in Tibco BW JDBC palette
其他更高级的选项