Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Перекрытие стандартных умолчаний.⇐ ПредыдущаяСтр 14 из 14
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 с.) |