-1
Мне нужно руководство по тому, как получить значение переменной в анонимном элементе plsql с помощью EclipseLink. Ниже я оставляю образец запроса. Я знаю, что могу использовать функции и хранимые процедуры, однако существуют ограничения в базе данных.как вернуть значение в анонимный pl sql с помощью eclipselink
DataReadQuery query = new DataReadQuery();
SQLCall sqlCall = new SQLCall();
StringBuilder plsql = new StringBuilder();
plsql.append("DECLARE ");
plsql.append("\n");
plsql.append("out_variable ");
plsql.append("foo.bar");
plsql.append(".");
plsql.append("number_field");
plsql.append("%TYPE;");
plsql.append("\n");
plsql.append("BEGIN ");
plsql.append("\n");
plsql.append("UPDATE ");
plsql.append("number_field");
plsql.append(" SET number_field = (number_field+1)");
plsql.append(" WHERE ");
plsql.append(" key_field = ");
plsql.append(Key);
plsql.append(" ");
plsql.append(" RETURNING ");
plsql.append(" number_field ");
plsql.append(" INTO ");
plsql.append(" out_variable ; ");
plsql.append("\n");
plsql.append("END; \n");
sqlCall.setQueryString(plsql.toString());
sqlCall.setQuery(query);
query.setCall(sqlCall);
Session session =
JpaHelper.getEntityManager(getEntityManager()).getActiveSession();
Object queryResult = session.executeQuery(query);
Я не думаю, что анонимный блок может вернуть что-либо. Обычно вы должны использовать функцию, если хотите вернуть значение. Есть ли причина, по которой вам нужно выполнить свой код в блоке анонов вместо двух операторов? – FrustratedWithFormsDesigner
Можете ли вы использовать связанные параметры для значений ключа и вывода и уничтожить анонимный блок? Например. 'UPDATE SOME_TABLE SET NUMBER_FIELD = NUMBER_FIELD + 1 WHERE KEY_FIELD =: key_field_param RETURNING NUMBER_FIELD INTO: number_field_param'? –
Да! Но с использованием Oracle PL/SQL. –