如何 return MbElement[] 从 Java 到 ESQL?

How to return MbElement[] from Java to ESQL?

我想将 REFERENCE 作为参数传递给 Java 方法并对其进行转换,然后我想以 MbElement[] 的形式 return。

到目前为止,我尝试了以下方法。

我在 ESQL 中使用以下代码

CALL retrieveData(CAST(AGE AS INTEGER),OutputRoot.XMLNSC.employees) into RESULT;

调用java方法如下:

create function retrieveData(IN empId INTEGER,INOUT outputXML REFERENCE) 
returns integer 
language java 
external name "com.test.util.Database.retrieve";

下面是java方法:

public static Long retrieve(Long employeeAge,MbElement[] outputRoot) 
{ 
MbElement xmlnsc = outputRoot[0].getFirstElementByPath("XMLNSC"); 
MbElement employees =        xmlnsc.createElementAsFirstChild(MbElement.TYPE_NAME, "employees", null); 
MbElement employee =employees.createElementAsLastChild(MbElement.TYPE_NAME, "employee", ""); 
employee.createElementAsLastChild(MbElement.TYPE_NAME, "emp-id", 1001); 
employee.createElementAsLastChild(MbElement.TYPE_NAME, "emp-name", "john"); 
employee.createElementAsLastChild(MbElement.TYPE_NAME, "emp-age", 30); 
employee.createElementAsLastChild(MbElement.TYPE_NAME, "emp-city", "london"); 


return new Long(0); 
}

在测试上面的代码时,它抛出 SqlRoutine::clearDownChildEnv 错误。

如何解决这个问题。提前致谢...

我得到了输出。

我用过以下方式:

DECLARE RESULT INTEGER;

SET OutputRoot.XMLNSC.employees=null;

DECLARE outputref REFERENCE TO OutputRoot.XMLNSC.employees;

CALL retrieveData(CAST(AGE AS INTEGER),outputref) into RESULT;

它工作正常。