2016-08-09 2 views
0

Я хочу передать REFERENCE в качестве аргумента для метода Java и преобразовать его, тогда я хочу вернуться в виде MbElement [].Как вернуть MbElement [] из Java в ESQL?

До сих пор я пробовал следующее.

Я использую следующий код в 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 ошибка.

Как это решить. Спасибо заранее ...

ответ

0

У меня есть выход.

Я использовал следующий способ:

DECLARE RESULT INTEGER; 

SET OutputRoot.XMLNSC.employees=null; 

DECLARE outputref REFERENCE TO OutputRoot.XMLNSC.employees; 

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

Сво работает отлично.

Смежные вопросы