Перекрытие стандартных умолчаний. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Перекрытие стандартных умолчаний.



 

NLS_DATE_FORMAT – умалчиваемый формат данных.

NLS_DATE_LANGUAGE – указывает умалчиваемый язык для дат.

NLS_NUMERIC_CHARACTERS – задает десятичный и групповой разделитель в числе (для США 1,000 – это тысяча, для СНГ 1,000 – это единица).

NLS_CURRENCY – местный символ валюты.

NLS_ISO_CURRENCY – международный символ валюты.

NLS_SORT – последовательность сортировки.

 

Параметр NLS_DATE.

Чтобы задать параметр NLS_DATE_FORMAT, нужно выполнить команду ALTER SESSION или включить в строку специализации (NLS_DATE_FORMAT='DD-RM-YY' – в этом случае на первом месте – день, на втором – месяц римскими цифрами, на третьем – две последние цифры века).

Чтобы задать параметр NLS_DATE_LANGUAGE, нужно команду ALTER SESSION или включить в строку специализации (NLS_DATE_LANGUAGE=FRENCH).

Пример:

SELECT TO_CHAR (sysdate, 'Day:DD Month YYYY') FROM dual;

Результат: Mercredi: 13 Fevrier 2000.

Oracle позволяет вывести число прописью только на английском языке (13 - Thirteenth, а не тринадцатое).

 

Параметр NLS_NUMERIC_CHARACTERS.

Перекрывает те параметры, которые были заданы в NLS_TERRITORY.

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

Пример:

NLS_NUMERIC_CHARACTERS=' ,. ' – в качестве десятичного разделителя используется запятая, в качестве группового – точка.

Оба разделителя должны быть одиночными символами. Любой из них может быть пробелом. Если десятичный разделитель отличен от точки, или если используется групповой разделитель, то числа, которые появляются в предложениях SQL должны заключаться в апострофы.

Пример:

INSERT Into Sizes(ItemId, Width, Quantity) values (618, '45,5', to_Number ('1.234','9G999'));

 

Параметр NLS_CURRENCY

Специфицирует строку символов, возвращаемую числовой маской формата L и обозначающую местный символ валюты. Перекрывает значение, определенное параметром NLS_TERRITORY.

Пример:

NLS_CURRENCY='Грн'

SELECT To_Char(Total, 'L099G999D99') "TOTAL" from ORDERS where CustNo=586;

Результат

TOTAL

Грн 12.673,49

Изменить это значение можно в реестре, в файле инициализации (Config.ora) или с помощью команды ALTER SESSION.

 

Параметр NLS_SORT

Специфицирует тип сортировки, используемой для символьных данных. Перекрывает значения, заданные неявно параметром NLS_LANGUAGE.

Пример:

NLS_SORT={BINARY,'имя'}, где BINARY – бинарная сортировка (по принципу кода), 'имя' - лингвистическая сортировка (в соответствии с алфавитом).

 

Форматы чисел и дат.

Используются в функциях To_Char, To_Date и To_Number.

Формат дат

§ RM, rm – возвращает месяц в форме римского числа;

§ MM, mm - возвращает месяц в форме числа;

§ Mon, Month – название месяца (сокращение или полное название);

§ dd – возвращает день в числовой форме;

§ ddspth – возвращает день в прописной форме;

§ Dy - поддерживает сокращение названий дней;

§ Day – название дня недели.

Соглашения в нумерации недель и дней

Номер недели, возвращаемый маской формата WW вычисляется согласно алгоритму INT((day-jan1) / 7). Этот номер недели не соответствует формату ISO, поэтому используют формат IW.

Формат годов

§ Форматы ISO I, IY, IYY, IYYY

§ Форматы в Oracle Y, YY, YYY, YYYY

Для 1989 года результат: 9 89 989 1989

Числовые форматы

§ D – возвращает десятичный разделитель;

§ G – возвращает групповой разделитель;

§ L – возвращает местный символ валюты;

§ C – возвращает международный символ валюты;

§ RN – возвращает число римскими цифрами.

Для римских числительных можно специфицировать как прописные (RN), так и строчные (rn) начертания: IX или ix. Диапазон выводимых римских чисел 1..3999.

 

Объекты в Oracle.

Объект всегда содержит два характерных элемента: атрибуты объекта (фактически это данные) и методы (функции и процедуры).

Для создания объектов используется оператор CREATE TYPE.

Процесс создания объектов поход на процесс создания пакета.

Пример

Спецификация:

CREATE Complex AS OBJECT (rpart REAL,

ipart REAL,

MEMBER Function Plus(x Complex) Return Complex

……

);

где MEMBER – ключевое слово, определяющее каким образом будет осуществляться доступ к методу.

Тело объекта:

CREATE TYPE Body Complex AS

MEMBER Plus (x Complex) Return Complex IS

begin

RETURN Complex (rpart+x.rpart, ipart+x.ipart);

end Plus;

На этом создание и описание объекта закончено. Все методы и атрибуты описаны как public и видны "снаружи" объекта.

Атрибуты

В объекте можно определить до 1000 атрибутов, но нельзя внутри объекта объявлять типы, константы, курсоры.

В существующий объект нельзя добавить методы или атрибуты.

Для создания атрибутов можно использовать любое имя, уникальное внутри объекта (хотя имя может быть неуникальным для другого объекта). В качестве атрибута можно использовать любые типы Oracle, за исключением:

§ LONG, LONG RAW, NCHAR, NCLOB, NVARCHAR2, ROWID, UROWID.

§ нельзя использовать типы, специфичные для PL/SQL – binary_integer и его подтипы, boolean, PLS_integer, record, ref_cursor, аттрибуты %TYPE и %ROWTYPE.

§ нельзя использовать типы, определенные внутри PL/SQL пакетов.

В секции декларации атрибутов нельзя использовать операторы присваивания и операции default.

Методы

Методы – это подпрограммы, которые мы определяем в объекте.

Существует два основных типа методов:

1) методы member – эти методы можно вызывать, указав имя экземпляра объекта.

имя_экземпляра.plus(c1);

2) объявление static – в этом случае для вызова метода используется само название объекта: object_type.minus(c1);

Объявление метода в спецификации объекта должно полностью совпадать с описанием метода в теле объекта. Методы, объявленные как member, всегда имеют параметр Self. По умолчанию для процедур параметр Self является InOut. Для функций по умолчанию Self является In.

При попытке вызова метода member из нулевого экземпляра (т.е. для данного объекта не был вызван конструктор), метод не вызывается.

Методы можно делать перегружаемыми.

Сравнение объектов

Объекты можно сравнивать:

§ как равенство и неравенство, если вы не предпринимаете никаких специальных мер. Равенство будет в том случае, если равны все атрибуты объекта.

§ при специальных мерах: использование ключевых слов MAP и ORDER. Для объекта может быть определено только одно их этих двух ключевых слов. Эти ключевые слова должны предшествовать ключевому слову member и использоваться только с функциями.

Если вы используете ключевое слово MAP, то функция данного метода должна возвращать или char или real. Сравнение будет происходить по значению, которое возвращает функция. Сам оператор сравнения будет вызывать два метода (для каждой функции по одному).

При использовании ключевого слова ORDER метод или функция должны возвращать целое (integer) значение и это значение должно быть:

§ –1, если один объект (Self-объект) меньше другого объекта (передаваемого в функцию в качестве параметра);

§ 1, если Self>объекта;

§ 0, если объекты между собой равны.

Пример

CREATE TYPE body Rational AS

MAP member Function Convert Return real IS

begin

Return num/den;

end;

Переменные num и den – это атрибуты, которые были объявлены в типе объекта (имели тип integer). Сравниваться будет результат этой функции для двух объектов.

Пример

CREATE TYPE body Customer AS

ORDER member Function Match (c Customer) Return integer IS

begin

If id<c.id then Return –1;

ElsIf id>c.id then return 1;

Else return 0;

End If;

end;

end;

Конструктор в PL/SQL всегда нужно вызывать явно.

Пример

Declare

r Complex; - задекларировали объект

Begin

r:=Complex(30,40); - явно вызван конструктор

End;

Синтаксис объявления типов

CREATE [OR REPLACE] TYPE type_name

[AUTHID {CURRENT USER | DEFINER}]

{IS | AS object (

[{MAP | ORDER} member function_spec, ]

[{MEMBER | STATIC} {subrout_pr_spec | call_spec}]

[, { //--// }] …

);

Фрагмент [AUTHID {CURRENT USER | DEFINER}] определяет, с какими правами будут выполняться методы в определенном нами объекте. Если выбрали DEFINER, то методы, определенные в объекте, будут выполняться с правами автора объекта.

В объявлении объекта сами тела функций отсутствуют.

[ CREATE [OR REPLACE] TYPE BODY {IS | AS}

{ {MAP | ORDER} member function_body,

|{MEMBER | STATIC} {subpr_body | call_spec}; }

[{MEMBER | STATIC} {subpr_body | call_spec}; }] …

END; ]

 

Пример объекта типа STACK.

Определим спецификацию типа:

CREATE TYPE IntArray AS VARRAY(25) OF Integer;

CREATE TYPE Stack AS object(

max_size Integer,

top Integer, - указатель на вершину стека

position IntAttay, - сам стек

MEMBER PROCEDURE initialize,

MEMBER FUNCTION full RETURN BOOLEAN,

MEMBER FUNCTION empty RETURN BOOLEAN,

MEMBER PROCEDURE push (n IN integer), - входной параметр

MEMBER PROCEDURE pop (n OUT integer) - выходной параметр

);

/

Определим тело объекта:

CREATE TYPE BODY stack AS

MEMBER PROCEDURE initialize IS

BEGIN

top:=0; - можно было написать Self.top

position:=IntArray(NULL);

max_size:=position.LIMIT; - определили содержимое поля max_size,

используя метод LIMIT

position.EXTEND (max_size-1,1); - заполняем элементы со 2-го по 25-й значением

первого элемента

END initialize;

MEMBER FUNCTION full RETURN boolean IS

BEGIN

RETURN(top=max_size); - если указатель на вершину стека=max_size, то

стек полностью заполнен

END full;

MEMBER FUNCTION empty RETURN boolean IS

BEGIN

RETURN(top=0); - если указатель на вершину стека=0, то

стек пустой

END empty;

MEMBER PROCEDURE push (n IN integer) IS

BEGIN

IF NOT full THEN

top:=top+1;

position(top):=n;

ELSE

RAISE_APPLICATION_ERROR(-20102,'stack overflow');

END IF;

END push;

MEMBER PROCEDURE pop (n OUT integer) IS

BEGIN

IF NOT empty THEN

n:=position(top);

top:=top-1;

ELSE

RAISE_APPLICATION_ERROR(-20102,'stack underflow');

END IF;

END pop;

END; - закрыли оператор CREATE

/



Поделиться:


Последнее изменение этой страницы: 2017-01-26; просмотров: 263; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.100.120 (0.029 с.)