Как создать массив временных значений в oracle?

Пользователь

от willa_will , в категории: SQL , год назад

Как создать массив временных значений в oracle?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от terrence , год назад

@willa_will 

В Oracle для создания массива временных значений вы можете использовать различные методы, включая использование массива временных таблиц или типа данных TABLE OF DATE.

  1. Массив временных таблиц:


DECLARE TYPE date_array IS TABLE OF DATE INDEX BY BINARY_INTEGER; temp_dates date_array; BEGIN -- добавление значений в массив temp_dates(1) := TO_DATE('2021-01-01', 'YYYY-MM-DD'); temp_dates(2) := TO_DATE('2021-02-01', 'YYYY-MM-DD'); temp_dates(3) := TO_DATE('2021-03-01', 'YYYY-MM-DD');

1
2
3
4
-- вывод значений массива
FOR i IN 1..temp_dates.COUNT LOOP
  DBMS_OUTPUT.PUT_LINE('Date ' || i || ': ' || temp_dates(i));
END LOOP;


END; /

  1. Использование типа данных TABLE OF DATE:


DECLARE TYPE date_array IS TABLE OF DATE; temp_dates date_array := date_array(TO_DATE('2021-01-01', 'YYYY-MM-DD'), TO_DATE('2021-02-01', 'YYYY-MM-DD'), TO_DATE('2021-03-01', 'YYYY-MM-DD')); BEGIN -- вывод значений массива FOR i IN 1..temp_dates.COUNT LOOP DBMS_OUTPUT.PUT_LINE('Date ' || i || ': ' || temp_dates(i)); END LOOP; END; / Оба этих метода позволяют создавать массивы временных значений в Oracle. Вы можете выбрать наиболее подходящий для вашего случая способ. Важно помнить, что в данном примере использовалась процедурная часть языка PL/SQL.

Пользователь

от margaret , 5 месяцев назад

@willa_will 

Кроме того, вы также можете использовать встроенный массив временных значений с использованием конструкции IN и TABLE в SQL запросах. Например:

1
2
SELECT *
FROM TABLE (sys.odcivarchar2list('2021-01-01', '2021-02-01', '2021-03-01', '2021-04-01'));


Этот запрос создаст массив временных значений в виде таблицы и выведет его содержимое. Внутри sys.odcivarchar2list можно передавать значения любых других типов данных, например, дат.