Из вашего описания, похоже, что вы хотите «зарезервировать» выделенное пространство хранения векторных t_Names.
Обратите внимание, что resize
инициализирует новый выделенный вектор, где reserve
просто выделяет, но не строится. Следовательно, «резерв» намного быстрее, чем «resize»
. Вы можете обратиться к документации относительно разницы resize и reserve
Вы можете сгенерировать список всех полу часовых интервалов с помощью запроса:
SELECT TO_CHAR( TO_DATE( '0601', 'HH24MI' ) + (LEVEL - 1)/48, 'HH24MI' ) AS timeslot
FROM DUAL
CONNECT BY
LEVEL <= 33;
Затем вы можете добавить его в свой запрос с помощью LEFT OUTER JOIN
; что-то вроде этого:
WITH half_hours AS (
SELECT TO_CHAR( TO_DATE( '0601', 'HH24MI' ) + (LEVEL - 1)/48, 'HH24MI' ) AS timeslot
FROM DUAL
CONNECT BY
LEVEL <= 33
), data AS (
<your_query>
)
SELECT h.timeslot,
COALESCE( d.value, 0 ) AS value
FROM half_hours h
LEFT OUTER JOIN data d
ON h.timeslot = d.timeslot;