СТАТЬЯ |
27.03.01
|
В режиме DBMS MAC, вы можете изменить свою метку DBMS посредством параметра SET LABEL команды ALTER SESSION. Для дополнительной информации об использовании этой команды обратитесь к вашему документу Trusted ORACLE7 Server Administrator's Guide.
Команда ALTER SESSION SET LABEL действительна также в режиме OS MAC; однако, поскольку вы не можете установить никакого другого значения метки DBMS, помимо метки базы данных, к которой вы подключены, здесь эта команда не имеет смысла.
Типы данных ANSI, DB2 и SQL/DS
Помимо типов данных ORACLE, столбцы таблиц в базе данных ORACLE могут быть определены с типами данных ANSI, DB2 и SQL/DS. Однако ORACLE внутренне преобразует такие типы данных в типы данных ORACLE.
Табл.3-3
Преобразования типов данных ANSI в типы данных ORACLE
|
|
CHARACTER(n), CHAR(n) | CHAR(n) |
NUMERIC(p,s), DECIMAL(p,s), DEC(p,s) | NUMBER(p,s) |
INTEGER, INT, SMALLINT | NUMBER(38) |
FLOAT(p) | FLOAT(p) |
REAL | FLOAT(63) |
DOUBLE PRECISION | FLOAT(126) |
CHARACTER VARYING(n), CHAR VARYING(n) | VARCHAR2(n) |
Табл.3-4
Преобразования типов данных SQL/DS и DB2 в типы данных ORACLE
Тип данных DB2 или SQL/DS | Тип данных ORACLE |
CHARACTER(n) | CHAR(n) |
VARCHAR(n) | VARCHAR2(n) |
LONG VARCHAR | LONG |
DECIMAL(p,s) | NUMBER(p,s) |
INTEGER, SMALLINT | NUMBER(38) |
FLOAT(p) | FLOAT(P) |
DATE | DATE |
Типы данных TIME, TIMESTAMP, GRAPHIC, VARGRAPHIC и LONG VARGRAPHIC продуктов IBM SQL/DS и DB2 не имеют соответствий среди типов данных ORACLE, и не могут использоваться. Типы данных TIME и TIMESTAMP являются субкомпонентами типа данных ORACLE DATE.
Типы данных ANSI NUMERIC, DECIMAL и DEC могут специфицировать только числа с фиксированной точкой. Для этих типов данных умалчиваемый масштаб (s) равен 0.
В некоторых случаях ORACLE позволяет применять данные одного типа там, где ожидаются данные другого типа. Это разрешается, когда ORACLE может автоматически преобразовать данные в ожидаемый тип данных, неявно используя одну из следующих функций:
Неявные преобразования типов данных осуществляются согласно правилам, объясняемым в следующих двух секциях.
Замечание: В последующем обсуждении словом CHAR обозначается весь класс символьных типов данных.
Если вы используете Trusted ORACLE, обратитесь за дополнительной информацией, касающейся преобразований данных и типов данных MLSLABEL и RAW MLSLABEL.
При присваиваниях ORACLE может автоматически преобразовывать: * CHAR в NUMBER
Присваивание выполняется успешно, если ORACLE может преобразовать присваиваемое значение в тип данных цели присваивания. Ниже объясняются четыре типа присваиваний.
В приведенных ниже примерах предполагается, что некий пакет содержит общую переменную и таблицу, объявленные следующим образом:
var1 CHAR(5);
CREATE TABLE table1 (col1 NUMBER);
* переменная := выражение
Тип данных выражения должен совпадать с типом данных переменной или быть преобразуемым в него. Например, ORACLE автоматически преобразует значение, представленное в следующем операторе присваивания в теле пакетированной процедуры:
VAR1 := 0
* INSERT INTO таблица VALUES (выражение1, выражение2, ...)
Типы данных выражений должны совпадать с типами данных соответствующих столбцов таблицы или быть преобразуемыми в них. Например, ORACLE автоматически преобразует данные, представленные в следующем предложении INSERT для таблицы TABLE1 (см. определение выше):
INSERT INTO table1 VALUES ('19');
* UPDATE таблица SET столбец = выражение
Тип данных выражения должен совпадать с типом данных столбца или быть преобразуемым в него. Например, ORACLE автоматически преобразует значение, представленное в следующем операторе UPDATE для таблицы TABLE1:
UPDATE table1 SET col1 = '30';
* SELECT столбец INTO переменная FROM таблица
Тип данных столбца должен совпадать с типом данных переменной или быть преобразуемым в него. Например, ORACLE автоматически преобразует данные, выбираемые из таблицы, перед их присваиванием переменной, в следующем предложении:
SELECT col1 INTO var1 FROM table1 WHERE col1 = 30;
Правило 2: Вычисление выражений
При вычислении выражений ORACLE может автоматически выполнять те же преобразования, что и при присваиваниях. Выражение преобразуется в зависимости от своего контекста. Например, операнды арифметических операторов преобразуются в NUMBER, а операнды строковых функций преобразуются в VARCHAR2.
Ниже приведены некоторые общие типы выражений:
* Простые выражения, например:
comm + '500'
* Булевские выражения, например:
bonus > sal / '10'
* Вызовы функций и процедур, например:
MOD (counter, '2')* Условия в фразе WHERE, например:
WHERE hiredate = TO_DATE('1993-01-01','yyyy-mm-dd') WHERE rowid = '0DC5.C.1'
В общем случае, там, где требуется преобразование данных и не работает правило для присваиваний, ORACLE использует правило для вычисления выражений.
В присваиваниях вида
переменная := выражение
ORACLE сначала вычисляет выражение, применяя преобразования, покрываемые правилом 2; выражение может быть простым или сколь угодно сложным. Если все проходит успешно, выражение дает в результате единственное значение с некоторым типом данных.
Затем ORACLE пытается присвоить это значение цели присваивания, используя правило 1.
Преобразования CHAR в NUMBER могут быть успешными лишь тогда, когда символьная строка содержит правильное число. Преобразования CHAR в DATE могут быть успешными лишь тогда, когда символьная строка имеет умалчиваемый формат даты для сессии, который определяется параметром NLS_DATE_FORMAT.
Дополнительную информацию Вы можете получить в компании Interface Ltd.
Обсудить на форуме Oracle
Отправить ссылку на страницу по e-mail
Interface Ltd.Отправить E-Mail http://www.interface.ru |
|
Ваши замечания и предложения отправляйте
автору По техническим вопросам обращайтесь к вебмастеру Документ опубликован: 27.03.01 |