Типы данных sql oracle

Типы данных sql oracle

ВЫБОР ТИПА ДАННЫ Х

Эта глава обсуждает типы данных ORACLE, их свойства и их соответствие типам данных не-ORACLE. Темы этой главы включают обсуждение следующих вопросов:

  • типы данных ORACLE: CHAR, VARCHAR2, NUMBER, DATE, ROWID, MLSLABEL, LONG, RAW и LONG RAW
  • ROWID’ы и тип данных ROWID
  • Тип данных MLSLABEL для Trusted ORACLE
  • типы данных ANSI, SQL/DS и DB2
  • преобразования данных

Типы данных ORACLE

Следующие секции описывают типы данных ORACLE, которые могут использоваться в определениях столбцов.

Символьные типы данных

Типы данных CHAR и VARCHAR2 хранят алфавитно-цифровые данные; в столбце одного из этих типов данных можно хранить любые символы. Символьные данные хранятся как строки символов, где байтовые значения соответствуют схеме кодирования символов (обычно называемой набором символов или кодовой страницей); набор символов базы данных устанавливается при создании базы данных и никогда не изменяется. Примерами наборов символов служат 7-битовый ASCII (американский стандартный код для обмена информацией), кодовая страница 500 набора символов EBCDIC (расширенный двоично-кодированный десятичный код обмена) или Japan Extended UNIX. ORACLE поддерживает как однобайтовые, так и мультибайтовые схемы кодирования. Обратитесь к приложению E для дополнительной информации о средствах поддержки национальных языков (NLS) в ORACLE и о том, как поддерживаются различные схемы кодирования символов.

Так как ORACLE дополняет пробелами значения в столбцах CHAR и не дополняет пробелами значения в столбцах VARCHAR2, столбцы VARCHAR2 более экономны в смысле затрат памяти на хранение. По этой причине, при полном просмотре большой таблицы, содержащей столбцы VARCHAR2, необходимо прочитать меньше блоков, чем для аналогичной таблицы со столбцами CHAR. Если ваше приложение часто выполняет полные просмотры больших таблиц, содержащих символьные данные, вы можете улучшить производительность, выбрав для таких данных тип данных VARCHAR2 вместо CHAR.

Однако производительность — не единственный фактор, который необходимо рассматривать при выборе между этими типами данных. ORACLE применяет различные семантики при сравнении значений для каждого из этих типов данных. Вы можете предпочесть один тип другому, если ваше приложение чувствительно к различиям между этими семантиками. Например, если вы хотите, чтобы ORACLE игнорировал хвостовые пробелы при сравнении символьных значений, то вы должны хранить такие значения в столбцах CHAR. Для информации о семантиках сравнения для символьных типов данных обратитесь к документу ORACLE7 Server SQL Language Reference Manual.

Тип данных CHAR

Тип данных CHAR хранит строки ФИКСИРОВАННОЙ длины. При создании таблицы со столбцом CHAR для этого столбца задается длина (в байтах, а не в символах) от 1 до 255 (по умолчанию 1). Затем ORACLE гарантирует соблюдение следующих правил:

  • Если входное значение короче, оно дополняется пробелами до фиксированной длины.
  • Если входное значение слишком длинно, ORACLE возвращает ошибку.

ORACLE сравнивает значения CHAR, используя ДОПОЛНЯЮЩУЮ СЕМАНТИКУ сравнения. Если сравниваемые значения имеют разную длину, то ORACLE дополняет более короткое значение пробелами до равной длины. Если два значения отличаются лишь числом хвостовых пробелов, то они считаются равными.

Тип данных VARCHAR2

Тип данных VARCHAR2 хранит символьные строки ПЕРЕМЕННОЙ длины. При создании таблицы со столбцом VARCHAR2 для этого столбца задается максимальная длина (в байтах, а не в символах) от 1 до 2000. Для каждой строки, значение столбца VARCHAR2 записывается как поле переменной длины (если входное значение превышает максимальную длину столбца, ORACLE возвращает ошибку). Например, предположим, что столбец объявлен с типом VARCHAR2 и максимальной длиной 50 символов. Если входное значение для этого столбца имеет длину 10 символов, то (в однобайтовом наборе символов) значение столбца в строке будет иметь длину 10 символов (10 байт), а не 50.

ORACLE сравнивает значения VARCHAR2, используя НЕДОПОЛНЯЮЩУЮ СЕМАНТИКУ сравнения. Два значения считаются равными лишь тогда, когда они состоят из одних и тех же символов и имеют одинаковую длину.

Тип данных VARCHAR

Тип данных VARCHAR в настоящее время является синонимом типа данных VARCHAR2. Однако в будущей версии ORACLE тип данных VARCHAR будет хранить строки символов переменной длины с иной семантикой сравнения. Поэтому используйте тип данных VARCHAR2 для символьных строк переменной длины.

Длины столбцов для символьных типов данных

Длины для столбцов CHAR и VARCHAR2 специфицируются в байтах, а не в символах, и ограничения на их длины рассматриваются в байтах. Если набор символов базы данных использует однобайтовую схему кодирования символов, то число символов в столбец совпадает с числом байтов. В мультибайтовой схеме кодирования такого соответствия в общем случае нет. Например, некоторые символы могут занимать один байт, другие — два байта, и т.д. Это соображение должно рассматриваться при оценке памяти для таблиц, столбцы которых содержат символьные данные.

Тип данных NUMBER

Тип данных NUMBER используется для хранения нуля и положительных или отрицательных чисел с фиксированной и плавающей точкой. Для этого типа данных гарантируется переносимость между любыми операционными системами, которые поддерживает ORACLE, с точностью до 38 цифр. Вы можете хранить положительные и отрицательные числа в интервале от 1 x 10**-130 до 9.99..9 x 10**125 (с точностью до 38 значащих цифр), а также ноль.

Для числовых столбцов можно просто указать NUMBER, например:

или можно указать ТОЧНОСТЬ (общее число цифр) и МАСШТАБ (число цифр справа от десятичной точки):

Если точность не указана, столбец хранит значения так, как они задаются. Если не указан масштаб, он считается нулевым. Масштаб может принимать значения от -84 до 127.

Хотя это и не обязательно, при задании числовых полей рекомендуется явно указывать точность и масштаб; это обеспечивает возможность дополнительной проверки данных на входе. На табл.3-1 приведены примеры хранения данных при использовании различных показателей масштаба.

Влияние показателя масштаба на хранение числовых данных

Входные данные Тип столбца Хранится как
7,456,123.89 NUMBER(*,1) 7456123.9
7,456,123.89 NUMBER(9) 7456123
7,456,123.89 NUMBER(9,2) 7456123.89
7,456,123.89 NUMBER(9,1) 7456123.9
7,456,123.89 NUMBER(6) ошибка: превышена точность
7,456,123.89 NUMBER(7,-2) 7456100

Тип данных DATE

Тип данных DATE хранит значения в виде точек времени (т.е. дату и время). Тип данных DATE запоминает год (включая век), месяц, день, часы, минуты и секунды. ORACLE может хранить даты в диапазоне от 1 января 4712 года до н.э. до 31 декабря 4712 года нашей эры. Если в маске формата не указано BC (до н.э.), предполагается по умолчанию наша эра (AD).

ORACLE использует для хранения дат собственный внутренний формат. Данные дат хранятся в фиксированных полях длиной семь байт, соответствующих веку, году, месяцу, дню, часу, минуте и секунде.

Стандартный формат даты ORACLE для ввода и вывода имеет вид DD-MON-YY, например:

Этот умалчиваемый формат даты можно изменить для инстанции с помощью параметра NLS_DATE_FORMAT. Его можно также изменить на время сессии пользователя с помощью предложения ALTER SESSION. Для ввода дат в формате, отличном от текущего умалчиваемого формата даты, используйте функцию TO_DATE с маской формата, например:

Если используется стандартный формат DD-MON-YY, то YY указывает год в 20-м веке (например, 31-DEC-92 означает 31 декабря 1992 г.). Если вы хотите задавать годы в другом веке, используйте другую маску формата, как показано выше.

Время хранится в 24-часовом формате HH:MM:SS. Если не введено значение времени, по умолчанию предполагается полночь (12:00:00 A.M.). Если вводится только порция, содержащая время, то за дату принимается первый день текущего месяца. Для того, чтобы ввести в дату время, необходимо это указать в маске формата функции TO_DATE, например:

Для сравнения дат, содержащих время, используйте функцию SQL TRUNC, если вы хотите проигнорировать компоненту времени. Используйте функцию SQL SYSDATE, чтобы получить текущие системные дату и время. С помощью параметра FIXED_DATE можно установить SYSDATE как константу; это может быть полезно при отладке.

Использование юлианских дат

Юлианские даты позволяют датировать события от общей точки. (Эта точка принимается за 01-01-4712 г. до н.э., так что сегодняшние даты лежат где-то в пределах 2.4 миллиона дней.) Юлианская дата по определению нецелая, ее дробная часть составляет часть дня. ORACLE использует упрощенный подход, в котором используются целые числа. Юлианские даты могут вычисляться и интерпретироваться по-разному; метод, используемый в ORACLE, представляет дату в виде семизначного числа (для наиболее часто используемых дат); например, 8 апреля 1991 года будет представлено в виде 2448355.

Для преобразования дат в даты юлианского календаря в функциях преобразования даты (TO_DATE, TO_CHAR) может быть использована маска формата "J". Например следующий запрос возвращает все даты в юлианском формате:

Чтобы использовать юлианские даты в вычислениях, необходимо использовать также функцию TO_NUMBER. Для ввода юлианских дат можно использовать функцию TO_DATE:

Арифметика дат ORACLE учитывает аномалии исторически применяемых календарей. Например, при переходе с юлианского календаря на грегорианский календарь, 15 октября 1582 года, были потеряны предыдущие 10 дней (с 05 по 14 октября). Кроме того, год 0 не существует.

Читайте также:  Как изменить параметры компьютера

Пропущенные даты могут быть введены в базу данных, но они игнорируются в арифметике дат и рассматриваются как следующая "реальная" дата. Например, следующим днем за 04 октября 1582 будет 15 октября 1582, а следующим днем за 05 октября 1582 будет 16 октября 1582.

Замечание: Это обсуждение арифметики дат применимо не ко всем национальным стандартам дат (например, некоторым в Азии).

Тип данных LONG

Столбец, описанный как LONG, может содержать символьную строку переменной длины до двух гигабайт. Столбцы типа LONG имеют многие характеристики столбцов VARCHAR2. Длина значений LONG может лимитироваться основной памятью, доступной на вашем компьютере.

Использование данных LONG

Тип данных LONG используется в словаре данных для хранения текста определений обзоров. Вы можете использовать столбцы, определенные как LONG, в списках SELECT, фразах SET предложений UPDATE и фразах VALUES предложений INSERT.

Ограничения на данные типа LONG и LONG RAW

Хотя столбцы типа LONG (и LONG RAW; см. ниже) находят много различных применений, на их использование накладываются некоторые ограничения:

  • Только один столбец типа LONG допускается в таблице.
  • Столбцы LONG нельзя индексировать.
  • Столбцы LONG нельзя использовать в ограничениях целостности.
  • Столбцы LONG нельзя использовать в фразах WHERE, GROUP BY, ORDER BY, CONNECT BY, а также с оператором DISTINCT в предложениях SELECT.
  • Столбцы LONG нельзя использовать в функциях SQL (таких как SUBSTR или INSTR).
  • Столбцы LONG нельзя использовать в списке SELECT подзапроса или запросов, объединяемых операторами множеств (UNION, UNION ALL, INTERSECT или MINUS).
  • Столбцы LONG нельзя использовать в выражениях.
  • Нельзя ссылаться на столбцы LONG при создании таблицы с помощью запроса (CREATE TABLE . AS SELECT . ) или при вставке в таблицу (обзор) через запрос (INSERT INTO . SELECT . ).
  • Переменная или аргумент программной единицы PL/SQL не могут объявляться с типом данных LONG.

Проектируя таблицы, содержащие данные LONG или LONG RAW, помещайте каждый столбец LONG или LONG RAW в особую таблицу, отдельно от любых других связанным с ними данных, вместо того чтобы хранить столбец LONG или LONG RAW в общей таблице с другими данными. После этого вы можете связать обе таблицы ограничением ссылочной целостности. Такой проект позволит предложениям SQL, использующим лишь другие ассоциированные данные, избежать сканирования по данным LONG или LONG RAW.

Чтобы сохранить информацию о журнальных статьях, включая текст каждой статьи, создайте две таблицы:

Таблица ARTICLE_TEXT хранит только текст каждой статьи. Таблица ARTICLE_HEADER хранит всю остальную информацию о статье, включая ее заголовок, первого автора, название журнала и дату публикации. Обе таблицы связаны ограничением ссылочной целостности по столбцу ID в каждой таблице.

Этот проект позволяет предложениям SQL опрашивать данные, отличные от текстов статей, не читая самих текстов. Например, если вы хотите выбрать всех первых авторов, публиковавшихся в журнале "Nature" в течение июля месяца 1991 года, вы можете выдать следующий запрос по таблице ARTICLE_HEADER:

Если бы текст каждой статьи хранился в одной таблице с ее автором, названием журнала и датой публикации, ORACLE пришлось бы просматривать все эти тексты при выполнении данного запроса.

Типы данных RAW и LONG RAW

Типы данных RAW и LONG RAW используются для данных, которые не должны ни интерпретироваться ORACLE, ни преобразовываться при передаче данных между различными системами. Эти типы данных предназначены для двоичных данных или байтовых строк. Например, LONG RAW можно использовать для хранения графики, звука, документов или массивов двоичных данных; их интерпретация зависит от их использования.

RAW эквивалентен VARCHAR2, а LONG RAW эквивалентен LONG, с тем исключением, что SQL*Net (который соединяет пользовательские сессии с инстанцией) и утилиты экспорта и импорта не выполняют преобразований при передаче данных RAW или LONG RAW. Напротив, SQL*Net и импорт/экспорт автоматически конвертируют данные CHAR, VARCHAR2 и LONG между набором символов базы данных и набором символов сессии пользователя (установленным параметром NLS_LANGUAGE или командой ALTER SESSION), если эти наборы символов различны.

Когда ORACLE автоматически преобразует данные RAW или LONG RAW в тип данных CHAR или из него (как в случае, когда данные RAW вводятся как литерал в предложении INSERT), эти данные рассматриваются как шестнадцатеричные цифры, каждая из которых представляет полубайт (четыре бита). Например, один байт данных RAW с битовым представлением 11001011 вводится и отображается как ‘CB’.

Данные LONG RAW не могут индексироваться, однако данные RAW можно индексировать.

ROWID’ы и тип данных ROWID

Каждой строке некластеризованной таблицы в базе данных ORACLE назначается уникальный ROWID, соответствующий физическому адресу данной строки (начального куска строки, если строка хранится как

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

Каждая таблица в базе данных ORACLE внутренне имеет ПСЕВДОСТОЛБЕЦ с именем ROWID; этот псевдостолбец не виден при выдаче структуры таблицы с помощью предложения SELECT * FROM . или предложения DESCRIBE в SQL*Plus. Однако адрес каждой строки можно извлечь запросом SQL, используя ключевое слово ROWID как имя столбца, например:

ROWID’ы используют двоичное представление физического адреса для каждой выбираемой строки. При запросах из SQL*Plus или SQL*DBA это двоичное представление преобразуется в шестнадцатеричное представление VARCHAR2, и запрос, показанный выше, мог бы возвратить следующую информацию строк:

Как показано выше, VARCHAR2/шестнадцатеричное представление ROWID разделяется на три компоненты: блок.строка.файл.

  • БЛОК ДАННЫХ, содержащий строку (блок DD5 в примере). Номера блоков относятся к их файлу данных, а НЕ к табличному пространству. Поэтому в двух разных файлах одного и того же табличного пространства могут храниться строки с одинаковыми номерами блоков.
  • СТРОКА в блоке, содержащем строку (строки 0, 1 и 2 в примере). Номера строк в данном блоке всегда начинаются с 0.
  • ФАЙЛ ДАННЫХ, содержащий строку (файл 1 в примере). Первый файл данных в каждой базе данных всегда имеет номер 1, и номера файлов уникальны внутри базы данных.

ROWID, назначенный строке, остается неизменным до тех пор, пока строка не будет экспортирована и вновь импортирована (с помощью утилит IMPORT и EXPORT). Когда строка удаляется (и соответствующая транзакция подтверждена), ROWID, ассоциированный с удаленной строкой, может быть назначен строке, вставляемой в последующей транзакции.

Нельзя устанавливать значение псевдостолбца ROWID в предложениях INSERT или UPDATE. Значения ROWID в псевдостолбце ROWID внутренне используются ORACLE в разнообразных операциях (см. следующую секцию). Хотя к значениям псевдостолбца ROWID можно обращаться как к другим столбцам таблицы (в списках SELECT и фразах WHERE), эти значения не хранятся в базе данных и не являются данными базы данных.

ROWID’ы и базы данных не-ORACLE

Приложения базы данных ORACLE можно выполнять на серверах баз данных, отличных от ORACLE, используя SQL*Connect или Oracle Open Gateway. В таких случаях двоичный формат значений ROWID изменяется в соответствии с характеристиками системы не-ORACLE. Более того, стандартная трансляция значений ROWID в формат VARCHAR2/шестнадцатеричный недоступна. Программы могут по-прежнему использовать тип данных ROWID; однако они должны применять нестандартную трансляцию в шестнадцатеричный формат, используя до 256 байт. Обратитесь к соответствующему

руководству по OCI или прекомпилятору за дополнительными подробностями об использовании значений ROWID в сочетании с системами, отличными от ORACLE.

Как используются ROWID’ы

ROWID’ы внутренне используются ORACLE в конструкциях индексов. Каждый ключ в индексе ассоциируется с ROWID’ом, указывающим на адрес соответствующей строки, для быстрого доступа.

Некоторые характеристики ROWID’ов могут также использоваться разработчиками приложений: * ROWID’ы дают самый быстрый доступ к конкретным строкам.

  • ROWID’ы позволяют увидеть, как организована таблица.
  • ROWID’ы уникально идентифицируют строки в таблице.

Прежде чем использовать ROWID’ы в предложениях DML, они должны быть проверены и гарантированы от изменений; иными словами, необходимые строки должны быть заблокированы, чтобы их нельзя было удалить. Попытка обращения к данным с некорректным значением ROWID приведет либо к тому, что строка не будет возвращена, либо к ошибке 1410 (неверный ROWID).

Вы можете также создавать таблицы со столбцами, определенными с типом данных ROWID; например, вы определяете таблицу исключений со столбцом типа данных ROWID, чтобы запоминать ROWID’ы тех строк базы данных, которые нарушают ограничения целостности. Столбцы, определенные с типом данных ROWID, ведут себя как обычные столбцы; их значения можно обновлять, и т.п. Все значения в столбце типа данных ROWID занимают шесть байт.

Примеры использования значений ROWID

Используя ROWID с некоторыми групповыми функциями, вы можете увидеть, как данные внутренне хранятся в базе данных ORACLE.

Читайте также:  Как бесплатно пользоваться photoshop

Функцию SUBSTR можно использовать, чтобы разбить значение ROWID на три его компоненты (файл, блок и строку). Например, запрос

мог бы возвратить следующие данные:

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

результаты этого запроса могут быть следующими:

Дополнительную информацию Вы можете получить в компании Interface Ltd.

ОБЛАСТЬ ПРИМЕНЕНИЯ: SQL Server База данных SQL Azure Azure Synapse Analytics (хранилище данных SQL) Parallel Data Warehouse APPLIES TO: SQL Server Azure SQL Database Azure Synapse Analytics (SQL DW) Parallel Data Warehouse

Типы данных Oracle и типы данных Microsoft Microsoft SQL Server SQL Server не всегда полностью совпадают. Oracle data types and Microsoft Microsoft SQL Server SQL Server data types do not always match exactly. Там, где это возможно, выбор подходящего типа данных при публикации таблицы Oracle осуществляется автоматически. Where possible, the matching data type is selected automatically when publishing an Oracle table. В случаях, когда выбор однозначного соответствия типов данных не очевиден, предлагаются альтернативные сопоставления типов данных. In cases that a single data type mapping is not clear, alternative data type mappings are provided. Сведения о выборе альтернативных соответствий типов данных см. ниже в разделе «Указание альтернативных сопоставлений типов данных». For information about how to select alternative mappings, see the "Specifying Alternative Data Type Mappings" section later in this topic.

Следующая таблица показывает, как по умолчанию осуществляется преобразование типов данных между Oracle и SQL Server SQL Server , когда данные передаются издателем Oracle распространителю SQL Server SQL Server . The following table shows how data types are mapped by default between Oracle and SQL Server SQL Server when data is moved from the Oracle Publisher to the SQL Server SQL Server Distributor. В столбце «Альтернатива» показано, допустимы ли альтернативные соответствия. The Alternatives column indicates whether alternative mappings are available.

Тип данных Oracle Oracle data type Тип данных SQL Server SQL Server data type Альтернатива Alternatives
BFILE BFILE VARBINARY(MAX) VARBINARY(MAX) Да Yes
BLOB BLOB VARBINARY(MAX) VARBINARY(MAX) Да Yes
CHAR([1-2000]) CHAR([1-2000]) CHAR([1-2000]) CHAR([1-2000]) Да Yes
CLOB CLOB VARCHAR(MAX) VARCHAR(MAX) Да Yes
DATE DATE DATETIME DATETIME Да Yes
FLOAT FLOAT FLOAT FLOAT нет No
FLOAT([1-53]) FLOAT([1-53]) FLOAT([1-53]) FLOAT([1-53]) нет No
FLOAT([54-126]) FLOAT([54-126]) FLOAT FLOAT нет No
INT INT NUMERIC(38) NUMERIC(38) Да Yes
INTERVAL INTERVAL DATETIME DATETIME Да Yes
LONG LONG VARCHAR(MAX) VARCHAR(MAX) Да Yes
LONG RAW LONG RAW IMAGE IMAGE Да Yes
NCHAR([1-1000]) NCHAR([1-1000]) NCHAR([1-1000]) NCHAR([1-1000]) нет No
NCLOB NCLOB NVARCHAR(MAX) NVARCHAR(MAX) Да Yes
NUMBER NUMBER FLOAT FLOAT Да Yes
NUMBER([1-38]) NUMBER([1-38]) NUMERIC([1-38]) NUMERIC([1-38]) нет No
NUMBER([0-38],[1-38]) NUMBER([0-38],[1-38]) NUMERIC([0-38],[1-38]) NUMERIC([0-38],[1-38]) Да Yes
NVARCHAR2([1-2000]) NVARCHAR2([1-2000]) NVARCHAR([1-2000]) NVARCHAR([1-2000]) нет No
RAW([1-2000]) RAW([1-2000]) VARBINARY([1-2000]) VARBINARY([1-2000]) нет No
real REAL FLOAT FLOAT нет No
ROWID ROWID CHAR(18) CHAR(18) нет No
timestamp TIMESTAMP DATETIME DATETIME Да Yes
TIMESTAMP(0-7) TIMESTAMP(0-7) DATETIME DATETIME Да Yes
TIMESTAMP(8-9) TIMESTAMP(8-9) DATETIME DATETIME Да Yes
TIMESTAMP(0-7) WITH TIME ZONE TIMESTAMP(0-7) WITH TIME ZONE VARCHAR(37) VARCHAR(37) Да Yes
TIMESTAMP(8-9) WITH TIME ZONE TIMESTAMP(8-9) WITH TIME ZONE VARCHAR(37) VARCHAR(37) нет No
TIMESTAMP(0-7) WITH LOCAL TIME ZONE TIMESTAMP(0-7) WITH LOCAL TIME ZONE VARCHAR(37) VARCHAR(37) Да Yes
TIMESTAMP(8-9) WITH LOCAL TIME ZONE TIMESTAMP(8-9) WITH LOCAL TIME ZONE VARCHAR(37) VARCHAR(37) нет No
UROWID UROWID CHAR(18) CHAR(18) нет No
VARCHAR2([1-4000]) VARCHAR2([1-4000]) VARCHAR([1-4000]) VARCHAR([1-4000]) Да Yes

Вопросы сопоставления типов данных Considerations for Data Type Mapping

При репликации данных из базы данных Oracle нужно помнить о следующих особенностях типов данных. Keep the following data type issues in mind when replicating data from an Oracle database.

Неподдерживаемые типы данных Unsupported Data Types

Следующие типы данных не поддерживаются; столбцы, имеющие эти типы, невозможно реплицировать. The following data types are not supported; columns that have these types cannot be replicated:

Типы Object Object types

Типы XML XML types

Типы Varray Varrays

Вложенные таблицы; Nested tables

Столбцы, использующие REF Columns that use REF

Тип данных DATE The DATE Data Type

Даты в диапазоне SQL Server SQL Server от 1753 нашей эры. Dates in SQL Server SQL Server range from 1753 A.D. до 9999 г. нашей эры, тогда как даты в Oracle распределяются в диапазоне от 4712 г. до нашей эры to 9999 A.D., whereas dates in Oracle range from 4712 B.C. до 4712 г. нашей эры. to 4712 A.D. Если столбец, имеющий тип DATE, содержит значения, выходящие за диапазон SQL Server, выберите для столбца альтернативный тип данных, которым является VARCHAR(19). If a column of type DATE contains values that are out of range for SQL Server, select the alternative data type for the column, which is VARCHAR(19).

Типы FLOAT и NUMBER FLOAT and NUMBER Types

Масштаб и точность, задаваемые при сопоставлении типов данных FLOAT и NUMBER, зависят от масштаба и точности, указанных для столбца, использующего этот тип данных в базе данных Oracle. The scale and precision specified during the mapping of FLOAT and NUMBER data types depends upon the scale and precision specified for the column using the data type in the Oracle database. Точность представляет собой количество цифр в числе. Precision is the number of digits in a number. Масштаб представляет собой количество цифр справа от десятичной запятой в числе. Scale is the number of digits to the right of the decimal point in a number. Например, у числа 123,45 точность равна 5, а масштаб равен 2. For example, the number 123.45 has a precision of 5 and a scale of 2.

Oracle позволяет определять числа, имеющие масштаб больший, чем точность, например NUMBER(4,5), в то время как SQL Server SQL Server требует, чтобы точность была не меньше масштаба. Oracle allows numbers to be defined with a scale greater than the precision, such as NUMBER(4,5), but SQL Server SQL Server requires the precision to be equal to or greater than the scale. Чтобы исключить усечение данных, когда в данных издателя Oracle масштаб больше, чем точность, при преобразовании данных точность приравнивается к масштабу: тип данных NUMBER(4,5) преобразуется в NUMERIC(5,5). To ensure there is no data truncation, if the scale is greater than the precision at the Oracle Publisher, the precision is set equal to the scale when the data type is mapped: NUMBER(4,5) would be mapped as NUMERIC(5,5).

Если для типа NUMBER не указать масштаб и точность, SQL Server SQL Server будет использовать по умолчанию максимальные масштаб (8) и точность (38). If you do not specify a scale and precision for NUMBER, SQL Server SQL Server defaults to using the maximum scale (8) and precision (38). Для оптимизации хранения данных и производительности при репликации данных рекомендуется установить специальные значения масштаба и точности в Oracle. We recommend that you set a specific scale and precision in Oracle for better storage and performance when the data is replicated.

Типы больших объектов Large Object Types

Oracle поддерживает до 4 гигабайт (ГБ), в то время как SQL Server поддерживает до 2 ГБ. Oracle supports up to 4 gigabytes (GB), whereas SQL Server supports up to 2 GB. Реплицируемые данные свыше 2 ГБ усекаются. Data replicated above 2 GB is truncated.

Если таблица Oracle включает столбец типа BFILE, данные для этого столбца хранятся в файловой системе. If an Oracle table includes a BFILE column, the data for the column is stored in the file system. Административной учетной записи репликации должно быть предоставлено право доступа в каталог, в котором хранятся данные. С этой целью должно использоваться следующее синтаксическое выражение: The replication administrative user account must be granted access to the directory in which the data is stored using the following syntax:

GRANT READ ON DIRECTORY TO

Дополнительные сведения о типах больших объектов см. в разделе с рекомендациями по большим объектам статьи Рекомендации по структуре и ограничения для издателей Oracle. For more information about large objects types, see the section "Considerations for Large Objects" in Design Considerations and Limitations for Oracle Publishers.

Указание альтернативных сопоставлений типов данных Specifying Alternative Data Type Mappings

Обычно целесообразно использовать сопоставление типов данных по умолчанию, но для многих типов данных Oracle вместо сопоставления по умолчанию можно выбрать тип данных из набора альтернативных вариантов. Typically, the default data type mapping is appropriate, but for many Oracle data types, you can select a data type mapping from a set of alternative mappings, rather than using the default. Существует два способа указания альтернативных сопоставлений: There are two ways to specify alternative mappings:

Читайте также:  Скол на телевизоре как убрать

Переопределяйте значения по умолчанию для каждой статьи отдельно, используя хранимые процедуры или мастер создания публикаций. Override the default on a per-article basis using stored procedures or the New Publication Wizard.

Глобальная замена значений по умолчанию для всех последующих статей с помощью хранимых процедур (значения по умолчанию для существующих статей не изменяются). Globally change the default for all future articles using stored procedures (defaults are not changed for existing articles).

Чтобы указать альтернативные сопоставления типов данных, см. раздел Указание сопоставления типов данных для издателя Oracle. To specify alternative data type mappings, see Specify Data Type Mappings for an Oracle Publisher.

Содержание

ORACLE

Как показано ниже, Oracle поддерживает множество типов данных, в том числе большинство стандартных типов SQL 2003. Естественно, для этого нужно скачать и установить сам ORACLE.

Типа для больших данных

В FILE (тип данных SQL 2003: DATALINK)

Содержит указатель на объект типа BLOB, хранимый вне пределов базы данных, но находящийся на локальном сервере и имеющий размер до 4 Гб. База данных осуществляет потоковый доступ по чтению (но не по записи) к этому внешнему объекту. Если вы удалите строку, содержащую значение типа BFILE, будет удален только указатель. Исходная структура файлов не затрагивается.

BINARY FLOAT(тип данных SQL 2003: FLOAT)

Хранит 32-битное число с плавающей точкой. BINARY DOUBLE (тип данных SQL 2003: FLOAT) Хранит 64-битное число с плавающей точкой.

BLOB (тип данных SQL 2003: BLOB)

Храпит большой двоичный объект (binary large object, BLOB) размером от 8 до 128 терабайт в зависимости от размера блока в базе данных. В Oracle большие двоичные объекты (BLOB, CLOB, NCLOB) имеют следующие ограничения.

  • Их нельзя выбирать с удаленной машины.
  • Их нельзя сохранять в кластерах.
  • Их нельзя объединять в типе varray.
  • Они не могут быть компонентом предложений ORDER BYw GROUP BY ъ запросе.
  • Их нельзя использовать в агрегатных функциях запроса.
  • На них нельзя ссылаться в запросах при помощи инструкций DISTINCT wUNIQUE или в соединениях.
  • На них нельзя ссылаться в предложениях ANALYZE…COMPUTE и ANALYZE… ESTIMATE.
  • Они не могут быть частью первичного ключа или ключа индекса.
  • Их нельзя использовать в предложении UPDATE OF триггера UPDATE.

CHAR(n) [BYTE | CHAR], СНАRACTER(n)[BYTE CHAR] (тип данных SQL 2003: CHARA CTER(n))

Хранит массив символьных данных фиксированной длины до 2000 байт. При указании атрибута BYTE длина массива измеряется в байтах. При указании атрибута CHAR длина измеряется в символах.

CLOB (тип данных SQL 2003: CLOB)

Хранит большой символьный объект (large character object, CLOB) размером от 8 до 128 терабайт в зависимости от размера блока в базе данных.

DATE (тип данных SQL 2003: DATE)

Хранит дату и время в диапазоне от 00:00:00 01-01-4712 до н. э. до 23:59:59 31-12-9999.

DECIMALfp, s) (тип данных SQL 2003: DECIMALfp, s))

Синоним типа NUMBER, принимающий в качестве аргументов точность и масштаб.

DOUBLE PRECISION (тип данных SQL 2003: DOUBLE PRECISION)

Хранит значения с плавающей точкой двойной точности. То же, что FLOAT(126).

FLOAT(n) (тип данных SQL 2003: FLOAT(n))

Хранит числовые данные с плавающей точкой с двоичной точностью до 126.

INTEGER(n) (тип данных SQL 2003: INTEGER)

Хранит целые числа со знаком и без знака с точностью до 38. Тип INTEGER считается синонимом NUMBER.

INTERVAL DAY (n) ТО SECOND (х) (тип данных SQL 2003: INTERVAL)

Хранит промежуток времени, измеряемый в днях, часах, минутах и секундах, п -число цифр в поле «день» (допустимые значения 0-9, по умолчанию — 2), а х-число цифр для долей секунды в поле секунд (допустимые значения 0-9, по умолчанию — 6).

INTERVAL YEAR (n) ТО MONTH (х) (тип данных SQL 2003: INTERVAL)

Хранит промежуток времени, измеряемый в годах и месяцах, где n — число цифр в поле года. Значение n может быть от 0 до 9, по умолчанию — 2.

LONG (тип данных SQL 2003: отсутствует)

Хранит массив символьных данных переменной длины до 2 Гб. Тем не менее нужно заметить, что Oracle в долгосрочной перспективе не планирует поддерживать тип LONG. Вместо этого типа старайтесь везде, где возможно, использовать другие типы, например CLOB.

LONG RAW (тип данных SQL 2003: отсутствует)

Хранит сырые двоичные данные переменной длины до 2 Гб. Типы LONG RAW и RA W обычно используются для хранения графики, звуковых данных, документов и других больших структур. Использование типа BLOB является более предпочтительным, чем применение LONG RAW, поскольку BLOB имеет меньше ограничений. Тип LONG RAW также выходит из употребления.

NATIONAL CHARACTER VARYING(n), NATIONAL CHAR VARYING(n), NCHAR VARYING(n)

Тип данных SQL 2003: NCHAR VARYlNG(n)) тo же, что и NVARCHAR2.

NCHAR(n), NATIONAL CHARACTER, NATIONAL CHAR(n) (тип данных SQL 2003:NATIONAL CHARACTER)

Хранит данные в формате символов UNICODE длиной от 1 до 2000 байт. По умолчанию — 1 байт.

NCLOB (тип данных SQL 2003: NCLOB)

Представляет собой CLOB с поддержкой многобайтовых символов и UNICODE размером от 8 до 128 терабайт в зависимости от размера блока базы данных.

NUMBER(p, s), NUMERIC(p, s) (тип данных SQL 2003: NUMERIC(p.s))

Хранит числа с точностью в пределах от 1 до 38 и масштабом от-84 до 127.

NVARCHAR2(n) (тип данных SQL 2003: отсутствует)

Представляет собой рекомендуемый Oracle тип для хранения символьных данных переменной длины. Может занимать от 1 до 4000 байт.

RAW(n) (тип данных SQL 2003: отсутствует)

Хранит массив сырых данных переменной длины до 2000 байт. Значение п указывает размер типа данных. В Oracle 10g тип RAW исключен. Смотрите LONG RAW.

REAL (тип данных SQL 2003: REAL)

Хранит значения с плавающей точкой с одинарной точностью. То же, что FLOAT(63).

ROW ID (тип данных SQL 2003: отсутствует)

Представляет собой уникальный идентификатор типа base-64 для каждой строки таблицы. Часто используется с псевдостолбцом ROWID.

SMALLINT

Тип данных SQL 2003: SMALL1NT, то же, что INTEGER.

TIMESTAMP(n) <[WITH TIME ZONE] [WITH LOCAL TIME ZONE]>(тип данных SQL 2003: TIMESTAMP [WlTH TIME ZONE])

Значение полной даты и времени, где п — количество цифр для долей секунды в поле секунд (допустимые значения 0 — 9, по умолчанию — 6). При указании атрибута WITH TIME ZONE сохраняется переданный в качестве параметра часовой пояс (по умолчанию — часовой пояс текущего сеанса) и значение времени выдается с учетом этого часового пояса. При указании атрибута WITH LOCAL TIME ZONE данные хранятся с учетом часового пояса текущего сеанса и возвращаются также с учетом часового пояса текущего сеанса.

UROWID [(п)] (тип данных SQL 2003: отсутствует)

Хранит значение типа base-64, показывающее логический адрес строки в таблице. По умолчанию размер составляет 4000 байт. Вы можете при желании указать размер в пределах до 4000 байт.

VARCHAR(n), CHARACTER VARYING(n), CHAR VARYING(n) (тип данных SQL 2003: CHARACTER VARYING(n))

Хранит символьные данные размером от 1 до 4000 байт.

VARCHAR2(n [BYTE CHAR]) (тип данных SQL 2003: CHARACTER VARYING(n))

Хранит символьные данные переменной длины до 4000 байт (определяется параметром и). Атрибут BYTE показывает, что размер измеряется в байтах. Если вы используете атрибут CHAR, база Oracle должна провести внутреннее преобразование в определенное количество байт, которое должно соответствовать ограничению в 4000 байт.

XMLTYPE (тип данных SQL 2003: XML)

Хранит в базе Oracle данные формата XML. Доступ к данным XML осуществляется с помощью выражений XPath, а также нескольких встроенных XPath-функций, функций SQL и пакетов PL/SQL. Тип XMLTYPE определяется системой, поэтому его можно использовать в качестве аргумента функций, а также типа данных для столбца в таблице или представлении. При использовании этого типа в таблице данные можно сохранить в форме CLOB или связанного объекта.

Oracle не рекомендует использовать тип VARCHAR. В течение многих лет Oracle поощряет использование типа VARCHAR2.

Дополнительная информация по теме

Основные типы данных используемые в платформе DB2, отличие от классического стандарта

Какие типы данных поддерживает и использует платформа MySQL, отличие от стандарта SQL

Какие основные типы данных используются в платформе PostgreSQL, отличие от стандарта SQL

Какие основные типы данных используются в платформе SQL Server, отличие от стандарта SQL

Ссылка на основную публикацию
Телефон греется и тормозит что делать
Почему тормозит устройство на Andro >Прежде чем перейти непосредственно к решению проблем, стоит указать на их причины. Зная о том,...
Стоит ли учиться на нефтяника
Добыча газа и нефти — очень популярная сфера в России. Именно поэтому большое количество выпускников стремится поступать на специальность «Нефтегазовое...
Стойка для аудио аппаратуры своими руками
Решил создать данную тему,т.к. думаю форумчанам будет интересно почитать, а кому то и поделиться личным опытом, по изготовлению своими руками...
Телефон завис на загрузке андроид
В результате поломки аппаратной части или сбоя в работе ОС любой Android-смартфон может перестать реагировать на кнопку включения. Частой можно...
Adblock detector