APEX 5: чтение таблицы в текстовой области
У меня есть таблица, которая выглядит примерно так.
`referenceID, IP1, IP2, IP3, subnetmask`
Теперь мне нужно получить IP-адреса с определенными ссылочными идентификаторами в поле Textarea или Displayonly, добавив простой текст до и после
Например:
*/
*/this goes infront of the ips
<ip1><ip2><ip3><subnet>
<2ip1><2ip2><2ip3><2subnet>
*/this text comes after the ips`
Проблема в том, что я не могу придумать, как выбрать все строки и ips в текстовой области (или только для отображения).
Методы, которые я пробовал до сих пор, просто вызывают ошибки, такие как "неправильное количество столбцов" или PL/SQL, запрашивая у меня место для выбора этих INTO где-нибудь.
Буду признателен за любое решение или помощь.
1 ответ
Вы можете попробовать вот так (основываясь на этом ответе):
SELECT 'this goes infront of the ips' ||
replace(SYS_CONNECT_BY_PATH (x_text, '~'), '~', CHR(10)) ||
CHR(10) || 'this text comes after the ips' AS textarea
FROM (SELECT IP1 || ',' || IP2 || ',' || IP3 || ',' || subnetmask AS x_text,
ROW_NUMBER () OVER (ORDER BY referenceID) AS x_rownumber,
COUNT (*) OVER () AS x_count
FROM yourtable
WHERE referenceID > 0)
WHERE x_rownumber = x_count
START WITH x_rownumber = 1
CONNECT BY x_rownumber = PRIOR x_rownumber + 1
Если вы используете Oracle 11.2 или выше, вы должны использовать следующее (на основе другого ответа):
SELECT 'this goes infront of the ips' || CHR(10) ||
LISTAGG(IP1 || ',' || IP2 || ',' || IP3 || ',' || subnetmask, CHR(10))
WITHIN GROUP (ORDER BY referenceID) ||
CHR(10) || 'this text comes after the ips' AS textarea
FROM yourtable
WHERE referenceID > 0
Замечания: referenceID > 0
это просто пример условия для ограничения вашего запроса конкретными ссылочными идентификаторами, и yourtable
следует заменить на название таблицы.