Я создаю Rest API в Oracle ORDS, и мне нужно вернуть текст base64, размер которого превышает 32 КБ. Тип источника: PL / SQL.
Исходные данные находятся в переменной CLOB, но ORDS не поддерживает этот тип возврата. Я пытался использовать LONG, но я не могу переместить строку в LONG, если она больше 32k.
- Я пытался переместить контент из CLOB в LONG, но безуспешно.
- Я попытался создать две переменные Long с нужным мне текстом и объединить их с переменной Long для вывода, но также безуспешно.
- Мне удалось вернуть содержимое в ResultSet, но это сделает структуру Json отличной от того, что мне нужно.
--This is the variable that has the large text (about 40k characters)
out_hexa CLOB;
-: boleto - это параметр OUT в ORDS (OUT, RESPONSE, LONG)
--This wont work:
:boleto := out_hexa;
--This wont work:
:boleto := substr(out_hexa, 1, 32765) || substr(out_hexa, 32765, LENGTH(out_hexa));
- Это работает, но вывод Json не тот, который я хотел, так как он создает второй уровень в Json
Важное замечание: в этом случае: boleto - это ResultSet, а не Long
OPEN :boleto FOR
SELECT out_hexa as dados from dual;
In this case the output is:
{
"boleto": [
{
"dados": "JVBERi0xLjQKMSAwIG9iago8PAovVGl0bGUgKP7..."
}
]
}
What I need is a Json in this format:
{
"boleto": "JVBERi0xLjQKMSAwIG9iago8PAovVGl0bGUgKP7..."
}