Базы данных Oracle - статьи

         

Как включить тип данных TIME


Включение использования типа данных TIME можно добиться установкой события 10407 на уровне сессии. Без включения данного события тип данных TIME остается заблокированным, и все обращения к нему или к зависимым функциям будут заканчиваться различными ошибками. Ниже приведен листинг включения данного события и создания таблицы с единственным полем типа данных TIME(0).

Листинг 1

SCOTT@O102>exec dbms_output.put_line (sqlerrm(-10407)); ORA-10407: enable datetime TIME datatype creation PL/SQL procedure successfully completed. SCOTT@O102> --Create table with time datatype SCOTT@O102>create table t (tm time); create table t (tm time) * ERROR at line 1: ORA-00902: invalid datatype SCOTT@O102> --Set event 10407 and try again SCOTT@O102>alter session set events '10407 trace name context forever, level 1';

Session altered. SCOTT@O102>create table t (tm time); Table created. SCOTT@O102>desc t Name Null? Type ----------------------------------------- -------- ------------------------- TM TIME(0) SCOTT@O102>insert into t select to_time('01.02.'level*5) from dual connect by level<=5; 5 rows created. SCOTT@O102>select * from t; TM --------------------------------------------------------------------------- 01.02.05 AM 01.02.10 AM 01.02.15 AM 01.02.20 AM 01.02.25 AM

В паре к типу данных TIME, существует тип данных TIME WITH TIME ZONE, который дополнительно хранит еще часы и минуты временной зоны. Если обратить внимание, то на самом деле мы в предыдущем примере создали таблицу типа данных TIME (0) – в текущей реализации тип данных TIME может хранить и доли, меньшие секунды. То есть TIME (n) служит для хранения: часов, минут, секунд и 10n

долей секунды (где n – целое от 0 до 9).



Содержание раздела