Oracle ords: Как создать метод put/post с коллекцией
Я создал метод публикации для получения данных о геолокации клиентов: метод публикации
Когда я вызываю метод post с помощью JSON:
{"customer": 1, "latitude":-21.13179, "longitude":-47.736782 }
Мой скрипт PL/SQL работает.
Теперь я хотел бы отправить группу записей, но я не знаю, как это сделать. Я создал метод PUT для получения коллекций геолокации и создал скрипт для анализа параметра: метод Put
Когда я вызываю метод put с помощью JSON:
{
"items":[
{
"customer":1,
"latitude":-21.13179,
"longitude":-47.736782
},
{
"customer":1,
"latitude":-21.13179,
"longitude":-47.736782
}
]
}
PL/SQL code:
declare
l_values apex_json.t_values;
begin
apex_json.parse (
p_values => l_values,
p_source => :items );
end;
Я получил сообщение:
400 - Bad Request - Expected a value but got: START_ARRAY.
Что я делаю не так? Я хочу создать метод post/put для получения коллекции. Спасибо за вашу помощь.
1 ответ
В OracleBase есть пример, который показывает способ использования 'JSON_Table' в 12c и 'JSON_Obect_t' pl/sql в 12Cr2. Данные JSON передаются в виде большого двоичного объекта в хранимый процесс, который затем анализирует и обновляет / что угодно. Я еще не тестировал его, но это похоже на хороший подход к работе с коллекциями, которые, очевидно, не могут быть обработаны ORDS "из коробки". Я экспериментировал с использованием метода массовой загрузки для загрузки временной таблицы, но это было только для csv и немного утомительно. Вот сообщение в блоге Джеффа Смита об этом
Я еще не проверял это, я перестроил свой подход для отправки каждой записи по отдельности, но в конечном итоге мне нужно будет использовать это. Я буду обновлять этот ответ, когда я делаю с примерами.
Я столкнулся с той же проблемой, и причина будет в том, что опубликовано в приведенном ниже URL.
https://community.oracle.com/thread/2182167?start=0&tstart=0
"В APEX Listener 1.1 PL/SQL Hander автоматически преобразует свойства JSON в неявные параметры. Обратите внимание, что это будет работать только для простых объектов JSON, массивы или вложенные объекты не поддерживаются".
По сути - нельзя передавать коллекции / массивы. Я не уверен, изменилось ли это сейчас или есть ли планы изменить это в дорожной карте.