Instrukcja ‘IF’ w Czystym DDL – Czy To Możliwe?
Tak, jest to możliwe. Wykorzystując zmienne SQL, można sterować pewnymi zachowaniami instrukcji DDL jak np w poniższym przykładzie, gdzie tworzona jest tabela z pierwszą partycją, której zakres górny określony jest przez warunek.
SET DEFINE ON; DEFINE first_partition_date = '2020-03-02'; COLUMN first_partition_date_txt NEW_VALUE first_partition_date; SELECT CASE WHEN 1=2 --specjalnie taki zapis, aby data zostala ustawiona zgodnie z SYSDATE THEN '&first_partition_date.' --Wartosc oryginalna 2023-03-02 ELSE TO_CHAR(SYSDATE, 'YYYY-MM-DD') END AS first_partition_date_txt FROM dual / DROP TABLE T1 / CREATE TABLE T1 ( log_timestamp TIMESTAMP(6) DEFAULT SYSTIMESTAMP, stage VARCHAR2(64) ) PARTITION BY RANGE (LOG_TIMESTAMP) INTERVAL(numtodsinterval(1,'day')) ( PARTITION P_FIRST VALUES LESS THEN (TO_DATE('&first_partition_date.', 'YYYY-MM-DD', 'NLS_CALENDAR=GREGORIAN')) ) /
I tak dzięki wykorzystaniu zmiennych SQL, zostanie utworzona tabela T1 z partycją P_FIRST, której górny zakres zostanie ustawiony zgodnie z SYSDATE. Nic nie stoi na przeszkodzie, aby ten sam zabieg wykorzystać przy instrukcjach DML.
Szymon
Komentarze |0|
Kategoria: SQL