Вызов хранимой процедуры с передачей аргумента табличного типа

Я создал эту хранимую процедуру в базе данных HANA, которая принимает два параметра: один — тип таблицы, а другой — varchar.

CREATE PROCEDURE UPDATE_GSTR(IN p_Input_Values "GSTR11".p_Input_Values , IN p_TRANS_ID VARCHAR(100))

Теперь я хочу вызвать эту процедуру на Java, я написал что-то вроде этого.

Connection dbConnection = null;
CallableStatement callableStatement = null;

String storedProcedure = "{call UPDATE_GSTR(?,?)}";

dbConnection = jdbc.getDataSource().getConnection();
callableStatement = dbConnection.prepareCall(storedProcedure);

callableStatement.setString(1, "");
callableStatement.setString(2, "");

// execute store procedure
callableStatement.executeUpdate();

Может ли кто-нибудь сказать мне, как передать объект как объект таблицы в аргументе при вызове этой хранимой процедуры?


person nomaan    schedule 23.08.2017    source источник
comment
Является ли IN типом данных? Передайте значение этого типа везде, где вы вызываете свой метод.   -  person Naman    schedule 23.08.2017


Ответы (1)


Входной параметр табличного типа нельзя создать вне SAP HANA. Для клиентских приложений одним из способов использования табличных параметров является использование временных таблиц, которые имеют ту же структуру, что и таблица параметров.

Затем ваше JAVA-приложение сначала заполнит временную таблицу и вызовет процедуру на втором этапе.

String storedProcedure = "{call UPDATE_GSTR("<temp_table_name>",?)}";
person Lars Br.    schedule 23.08.2017
comment
Спасибо за комментарий. Намерение реализовать эту концепцию состоит в том, чтобы передать загрузочную форму java в базу данных и повысить производительность, но, похоже, это невозможно сделать. - person nomaan; 23.08.2017
comment
Не уверен, что понимаю, что вы имеете в виду. В любом случае, вы передаете содержимое параметра типа таблицы, вам нужно как-то построить таблицу. Построение временной таблицы на стороне сервера, которую вы используете для передачи данных в процедуру, менее удобно, но не так уж много работы. - person Lars Br.; 23.08.2017