Studopediya

КАТЕГОРИИ:


Астрономия- (809) Биология- (7483) Биотехнологии- (1457) Военное дело- (14632) Высокие технологии- (1363) География- (913) Геология- (1438) Государство- (451) Демография- (1065) Дом- (47672) Журналистика и СМИ- (912) Изобретательство- (14524) Иностранные языки- (4268) Информатика- (17799) Искусство- (1338) История- (13644) Компьютеры- (11121) Косметика- (55) Кулинария- (373) Культура- (8427) Лингвистика- (374) Литература- (1642) Маркетинг- (23702) Математика- (16968) Машиностроение- (1700) Медицина- (12668) Менеджмент- (24684) Механика- (15423) Науковедение- (506) Образование- (11852) Охрана труда- (3308) Педагогика- (5571) П Arhitektura- (3434) Astronomiya- (809) Biologiya- (7483) Biotehnologii- (1457) Военно дело (14632) Висока технологиите (1363) Geografiya- (913) Geologiya- (1438) на държавата (451) Demografiya- ( 1065) Къщи- (47672) журналистика и SMI- (912) Izobretatelstvo- (14524) на външните >(4268) Informatika- (17799) Iskusstvo- (1338) История- (13644) Компютри- (11121) Kosmetika- (55) Kulinariya- (373) култура (8427) Lingvistika- (374) Literatura- (1642) маркетинг-(23,702) Matematika- (16,968) инженерно (1700) медицина-(12,668) Management- (24,684) Mehanika- (15423) Naukovedenie- (506) образование-(11,852) защита truda- (3308) Pedagogika- (5571) п Политика- (7869) Право- (5454) Приборостроение- (1369) Программирование- (2801) Производство- (97182) Промышленность- (8706) Психология- (18388) Религия- (3217) Связь- (10668) Сельское хозяйство- (299) Социология- (6455) Спорт- (42831) Строительство- (4793) Торговля- (5050) Транспорт- (2929) Туризм- (1568) Физика- (3942) Философия- (17015) Финансы- (26596) Химия- (22929) Экология- (12095) Экономика- (9961) Электроника- (8441) Электротехника- (4623) Энергетика- (12629) Юриспруденция- (1492) Ядерная техника- (1748) oligrafiya- (1312) Politika- (7869) Лево- (5454) Priborostroenie- (1369) Programmirovanie- (2801) производствено (97182) от промишлеността (8706) Psihologiya- (18,388) Religiya- (3217) с комуникацията (10668) Agriculture- (299) Sotsiologiya- (6455) спортно-(42,831) Изграждане, (4793) Torgovlya- (5050) превозът (2929) Turizm- (1568) физик (3942) Filosofiya- (17015) Finansy- (26596 ) химия (22929) Ekologiya- (12095) Ekonomika- (9961) Telephones- (8441) Elektrotehnika- (4623) Мощност инженерно (12629) Yurisprudentsiya- (1492) ядрена technics- (1748)

Видове PL / SQL данни

Всички типове са дефинирани в стандартен пакет, който също съдържа вграден SQL-функции и видове функции на реализация.

PL видове / SQL данни могат да бъдат причислени към една от следните категории:

1) скаларна;

2) компонент;

3) позоваване;

4) обект.

Скаларни типове. тип скаларни нарича тип, съдържащ една стойност. Скаларни типове се разделят на подтипове: на символи (низ), числено, логически (булеви), дата на време. видове PL / SQL символи са дадени в таблицата по-долу:

видове таблица със символи

CHAR [(размер)] Характер (размер) Спестява фиксирана дължина на символен низ. Максималният размер на 32,767 самостоятелни байта, обаче, се ограничава до бази данни 2000 байта.
VARCHAR2 (размер) VARCHAR (размер), STRING Запазва характера си низ с променлива дължина. Максималният размер на 32,767 самостоятелни байта, обаче, само 4000 байта могат да се съхраняват в базата данни.
LONG Магазини последователност от символи с променлива дължина, максимум 32760 байта не съответстват на типа LONG DB, която е по-голяма разделителна способност.
Суров (размер) Магазини двоични данни на фиксирана дължина и може да съдържа данни 32Kbayt. Базата данни съдържа само 2Kbayt.
LONG RAW Съхранява до 32 байта двоични данни не съответстват на типа LONG RAW DB, която е по-голяма разделителна способност.
ROWID магазини стойност на бази данни RowId запис без да го преобразувате в типов характер и физическото IDs ред.
UROWID Тя поддържа както физически и логически rowids.
NCHAR Той съдържа национален характер на данните на определена дължина.
NVARCHAR2 Той съдържа национални данни характер с различна дължина.

PL / SQL числови видове са изброени в Таблица

Таблица Числовите типове

тип данни подтип описание
BINARY_INTEGER (-2147483647..2147483647) Спестява числа, които се използват за стойности, които се съхраняват в базата данни, но се използват само в изчисленията. Той използва аритметика библиотека.
НОМЕР (P, S) (P - точност, S - скала) Dec, десетичен, двойна точност, FLOAT (прецизност), ЦЯЛО, INT, числови, REAL, SMALLINT P, S или не е посочено или посочена заедно. Спестява броят на фиксираните и с плаваща запетая, са изброени по-подтипове. Използва математика библиотека се съхраняват в десетичен формат. Ако се използва в изчисленията, той автоматично се превръща в BINARY_INTEGER и обратно.
PLS_INTEGER (-2147483647..2147483647) ЕСТЕСТВЕНО, NATURALN, положителен, POSITIVEN, SIGNTYPE Спестява числа, тя има същия формат и границите, които, обаче, ако стойността на препълване при извършване на този вид операция, ще настъпи BINARY_INTEGER грешка. За да се ускори изчисляването използва машина аритметика. ПРИРОДЕН NATURALN и задържа само не-отрицателни числа, последният забранява NULL стойности. ПОЛОЖИТЕЛЕН POSITIVEN и задържа само положителни числа, последният забранява NULL стойности. SIGNTYPE запазва само -1, 0, 1
BINARY_DOUBLE Вид на двойна точност с плаваща запетая, които се използват за научни изчисления.
BINARY_FLOAT Въведете единична точност с плаваща запетая, които се използват за научни изчисления.
TRUSTED
MLSLABEL



Чрез логически (булеви) се отнася само тип тип BOOLEAN, която получава стойността вярно, фалшиви, NULL.

Сред час и дата подтипове включват видове ДАТА, TIMESTAMP, интервал, които са почти идентични със съответните типове бази данни. !!!!

Съставни типове. Съставни типове се различават от скаларни типове, които те имат вътрешни компоненти - атрибути. Чрез композитни видове включват запис, вложени таблици, индекси маси, и променлива дължина масиви.

Записване. Запис (запис) - структурата на данните е компонент, който по същество е подобен по структура на ред от таблицата с данни. Тя се състои от няколко елемента, наречени полета (полета). Писане изобщо не е важно - важно е всяка отделна област, и запис дава възможност за съхраняване на тези ценности и достъп до тях като група. За да използвате записа, че е необходимо да се определи и да декларира променлива от този тип.

Има три вида сметки: въз основа на таблицата на базата на курсора и дефинирани от програмиста. Записи на базата на масата и курсорът не е необходимо да се дефинира ясно, защото по презумпция се дефинира с една и съща структура във вид на таблица или показалеца. Променливи от тези видове са обявени за използването на атрибута% ROWTYPE. записи на полетата съответстват на колоните на таблицата или колона от списъка, за да преместите курсора.

ДЕКЛАРИРАМЕ

v_roomrecord стаи% ROWTYPE;

Записи, определени от програмист, трябва да бъдат обявени в раздел TYPE командни PL / SQL реклами или в спецификацията на пакет. След това можете да декларират променливи от този тип, или да го използвате като част от различен тип

ДЕКЛАРИРАМЕ

ТИП name_rectype Е ОБОБЩЕНИЕ

(Префикс VARCHAR2 (15)

fname VARCHAR2 (15)

lname VARCHAR2 (30)

наставка VARCHAR2 (10));

new_emp_rec name_rectype;

Можете също така да създавате серии записи - рекорд, състояща се от области, които представляват записи. записи Приложение - мощен инструмент за нормализиране на структури от данни и се крие сложността в PL / SQL програми.

Инициализация записи. В отделните области на запис може да бъде посочен от нотация точка:

record_name. field_name

Отделните записи поле могат да се четат и писмени. Те могат да стоят както отляво, така и дясната страна на оператора за присвояване. Цялата рекорд може да бъде възложен на друг запис от същия тип, но се сравняват двата записа с помощта на логически оператор е невъзможно. Например, такава задача се разрешава:

shipto_address_rec: = customer_address_rec;

Но по-долу сравнението не е позволено (вместо това трябва да се сравняват отделните записи поле):

АКО shipto_address_rec = customer_address_rec

ТОГАВА

....

Крайна сметка, ако;

Принадлежността към записите и полетата на записите може да се направи по четири начина:

1. използва оператор задача да определят стойностите на полето:

new_emp_rec.hire_date: = SYSDATE;

2. изпълнява SELECT INTO за целия запис или отделни области:

SELECT emp_id, кат, заглавие, hire_date, college_recruit

В new_emp_rec

ОТ ЕМИ

КЪДЕТО фамилия = 'LI "

3. FETCH В изпълнява за целия запис или отделни области:

FETCH emp_cur В new_emp_rec;

FETCH emp_cur В new_emp_rec.emp_id, new_emp_rec.name;

4. възлага всички области на една променлива към друга променлива записи запис от същия тип:

АКО наели отново ТОГАВА

new_emp_rec: = former_emp_rec;

ENDIF;

PL / SQL колекции. Колекция (събиране) - компонент структура от данни, която се държи като едномерен масив или списък (PL / SQL не поддържа традиционните масиви).

В PL / SQL, има три типа колекции: ascotsiativnye (индекс) масиви (асоциативни масиви), вложени таблици (вложени таблици) и масиви с различен размер (променливи решетки) - VARRAY.

Колекции са изпълнени като видове (тип). Както и при другите видове дефинирани от потребителя, трябва първо да се определи вида, а след това да декларира инстанция на този тип. Установяване на типа може да се съхранява в базата данни, или се поставя в / SQL програма PL. Всеки екземпляр на вида е колекция.

Сравнение на видове за събиране

маса

особеност асоциативен масив вложена маса VARRAY
размерност един един един
Може да се използва в SQL не да да
Тя може да се използва като типа данни на колона на таблица? не Да; данни се съхраняват в отделна таблица Да; данни обикновено се съхраняват в една и съща маса
състояние Neinitsializiro- къпане Празен (не съдържа NULL); елементи, които не са определени Атомично празен; Призоваваме неприемливи елементи Атомично празен; Призоваваме неприемливи елементи
инициализация Автоматично при декларирането Чрез конструктор, задача проба Чрез конструктор, задача проба
В PL / SQL в елементите, може да бъде посочен с помощта на: BINARY_INTEGER или VARCHAR2 Положително цяло число от 1 до 2147483647 Положително цяло число от 1 до 2147483647
Недостатъчно? да Първоначално не; След отстраняване на га не
Limited? не Тя може да се разшири да
Можете да се придаде стойност на всеки елемент в даден момент? да Не, Може първо е необходимо да се извърши процедурата EXTEND Не, Тя може първо да бъде необходимо да се извърши обхваща, освен това разширяване е възможно само до горната граница
Разширени инструменти Присвояване на стойност на елемент с нов индекс Използвайте вградения в размер, или процедура TRIM за уплътняване, без предварително определен максимален EXTEND, или TRIM, но само до максималния размер на декларирани
Тя може да се сравнява за равенство не не не
Елементи запазват редни позиция на индекса при изтеглянето от база данни Колекцията не може да се съхранява в базата данни не да

Асоциативен масив е едномерен неограничен рядка колекция от еднородни елементи, което е достъпно само на PL / SQL, но не и в базата данни. Този масив е по-скоро като списъци и карти на разпространение в класически езици за програмиране в сравнение с обикновените масиви. Асоциативен масив може да се индексира използване видове BINARY_INTEGER, PLS_INTEGER или VARCHAR2. Той е ключът към използване на изявление или фраза FORALL насипни събира, които позволяват голяма доставка на данни от базата данни в софтуерния модул.

Пълен синтаксис:

CREATE [OR REPLACE] ТИП типа име е ТАБЛИЦА НА tip_elementa [НЕ NULL]

Индекс по [BINARY_INTEGER | PLS_INTEGER | VARCHAR2 (размер)];

Ключови думи:

типово име - разрешеното всеки идентификатор, които в последствие ще бъдат използвани за събиране на реклами.

tip_elementa - тип елементи в колекцията. Всички елементи трябва да бъдат от един и същ тип; обикновено скаларна тип данни, тип обект, или тип референтен обект. Ако елементите са обекти, самият тип обект не може да има като колекция атрибут. По изрично забранени видове елементи за събиране на данни включва BOOLEAN, NCHAR, NCLOB, NVARCHAR2, BCURSOR, маса и VARRAY.

NOT NULL - означава, че събирането на този вид не може да бъде елементи, чиято стойност е NULL. Въпреки това, тя може да бъде с атомна празно (uninitialised).

Вместен маса - едномерен неограничен събиране на еднородни елементи налични като PL / SQL и базата данни като колона или маса. Вложените маси първоначално са плътни (да има последователни индекси), но могат да станат оскъдни, в резултат на заличаването. В най-голяма степен отговаря на стандартни езици за програмиране за тях са десетки и десетки с повтарящи се елементи.

[CREATE [OR REPLACE]] ТИП типа име е ТАБЛИЦА НА tip_elementa [НЕ NULL];

Ключова дума стойности са подобни assotsiativnomu масив.

VARRAY - триизмерна ограничена колекция от подобни елементи, които са на разположение в PL / SQL и DB. VARRAY масиви винаги са ограничени и никога оскъдни. За разлика от вложени таблици, редът на техните елементи се запазва, когато ги запишете в базата данни и извличане от тях. Масив с променлива дължина е масив в традиционния смисъл на езиците за програмиране. За препратки към елементи на конструкцията се използват в стойностите на последователни индекс

[CREATE [OR REPLACE]] ТИП TYPE_NAME е {VARRAY |

Различни ARRAY} (maksimalno_elementov) НА tip_elementa [НЕ NULL];

Ключови думи:

maksimalno_elementov - е положително число, което определя максималния брой на елементите от масива и се изисква променлива дължина за инструкции.

Създаване колекции. След обявяването на някоя от горните колекции, трябва да създадете копие на колекциите, както следва:

ТИП index_table Е СПИСЪК НА НОМЕР INDEX ОТ BINARY_INTEGER;

indtab intex_table;

където indtab - index_table този случай.

С помощта на колекция атрибут% TYPE може да се свърже с него тип данни, различни колекции, като например:

ТИП varray1 Е VARRAY (20) на номера;

v1 varray1;

v2 v1% ТИП;

Ако определението за промяна v1 нещо с него и да промени определението за v2.

Функции и методи за събиране. Действия колекции могат да бъдат направени чрез следните функции:

CAST - преобразува един вид събиране на друг тип събиране, например:

SELECT column_value

От таблица (SELECT CAST (цветове, цвят-tab_t)

ОТ color_models_a

КЪДЕТО model_type = 'RGB);

MultiSet - показва таблицата на базата данни към колекцията. Прилагането MultiSet и CAST, можете да извлечете редове от таблицата на базата данни в колекцията тип колона. MultiSet може да се използва за извличане и CAST вложени колони и тяхното използване при задействане логика.

SELECT b.genus, b.species,

CAST (MultiSet (SELECT bh.country

ОТ bird_ местообитания BH

КЪДЕТО bh.genus = b.genus

И bh.species = b.species)

AS_ country_tab_t)

От птици, б;

TABLE - показва колекцията на масата на база данни; обратната функция на MultiSet.

SELECT *

ОТ color_models в

КЪДЕ "RED" IN (SELECT * FROM TABLE (в цветове).);

Чрез ТАБЛИЦА () може да бъде превърнато чуждестранно колекция:

ДЕКЛАРИРАМЕ

рожденници Birthdate_t: = Birthdate_t ('24 -SEP-1984 ", '19 -JUN-1993");

ЗАПОЧНЕТЕ

ЗА ПО the_rec

(SELECT COLUMN_VALUE

От таблица (CAST (рожден ден AS Birthdate_t)));

Колекции поддържат и редица методи е показано в таблица

маса

метод описание
СЪЩЕСТВУВА (х) Връща TRUE, ако има е х-ти елемент на вложените маса или променлива масив. В противен случай, той се връща FALSE.
COUNT Връща броя на елементите, които в момента са във вложено маса или в един променящ масив.
LIMIT Тя връща максималния брой елементи, които могат да съдържат непостоянен масив.
ПЪРВИ Връща първия компонент приложените таблици или променлива масив.
LAST Връща последния компонент на вложено маса или променлива масив.
Предшестващо (х) Връща компонент преди х-компонент загнездена маса или променлива масив.
СЛЕДВАЩАТА (х) Връща компонент след х-ти компонент на вложените масата или променлива масив.
EXTEND (х, у) Добавя х копия на у-тия елемент на вложените маса или променлива масив.
TRIM (х) "Разфасовки" х елементи от края на вложените маса или променлива масив.
DELETE (х) Премахва някои или всички елементи на вложените масата или променлива масив.

За да се обадите на тези методи се използват синтаксиса пунктирана нотация:

imya_kollektsii.imya_metoda [(параметри)]

Добавяне и изтриване на елементи. Можете да добавяте елементи към асоциативен масив, препратка към новите индекси. За да добавите елементи в приложените таблици или редици VARRAY първо трябва да увеличи събираемостта от EXTEND функция, а след това присвоява новата стойност елемент от една от представените по-рано методи.

За да премахнете елемент от вложените масата, независимо от своята позиция, функцията за изтриване. Тя ви позволява да премахнете елементи и функцията TRIM, но само за да се отстранят от края на колекцията.

Не трябва да се използва за една единствена колекция ИЗТРИЙ и TRIM - резултати не са тези, които ви очакват.

Навигационен път. Навигационен път - колекция, съдържаща елементи, които са членове на колекцията. Навигационен са мощен инструмент за прилагане на ООП конструкции в PL / SQL програми.

Ето един прост пример за определянето на вложени колекции:

CREATE ТИП книги Е ТАБЛИЦА НА VARCHAR2 (64);

CREATE TYPE our_books Е Таблица на книги;

Инициализиране колекции. Обявяване на асоциативен масив е и нейната инициализация. Инициализация вложени маса и масив VARRAY може да бъде извършено, както следва:

- Очевидно е, че с помощта на дизайнера;

- косвено, чрез извличане от базата данни;

- косвено, чрез пряко възлагане на друга променлива колекция.

Дизайнер - вградена функция, чието име съвпада с името на колекцията. Той създава колекция от елементи преминали към него. Например, можете да създадете вложени маса от цветове и изрично се инициализира неговите три елемента с помощта на конструктора:

ДЕКЛАРИРАМЕ

ТИП color_tab_t в таблица НА VARCHAR2 (30);

colors_tab_t ( "RED", "ЗЕЛЕН", "BLUE");

ЗАПОЧНЕТЕ

Прилагането на втория метод за инициализация, че е възможно да се създаде вложени маса от цветове и го инициализира косвено използване на извличане на данни от базата данни:

--Sozdat съхранение във вложено маса тип база данни.

CREATE TYPE colors_tab_t Е ТАБЛИЦА НА VARCHAR2 (32);

--Initsializirovat за събиране на данни цветове на масата.

ДЕКЛАРИРАМЕ

basic_colors colors_tab_t;

ЗАПОЧНЕТЕ

SELECT INTO цветове basic_colors

ОТ color_models

КЪДЕТО model_type = 'RGB;

END;

Третият метод за инициализация - инициализиране на масата е имплицитно използване задача от съществуваща колекция:

ДЕКЛАРИРАМЕ

basic_colors Color_tab_t: =

Color_tab_t ( "RED", "ЗЕЛЕН", "BLUE");

my_colors Color_tab_t;

ЗАПОЧНЕТЕ

my_colors: = basic_colors;

my_colors (2): = 'СИНАПЕНОТО;

Референтни типове данни и REF CURSOR Реф. За съхранение скаларни и композитни видове променливи се разпределя определена област на паметта. Променлива задава име, което е посочен от променливата. Това не е да се отмени разпределението на паметта при запазване на способността за работа с променлива. Референтните типове заобикаляне на забраната, т.е. променливи декларирани като отправна точка, може да сочат към различни области на паметта.

Променливи от тип REF CURSOR наречени курсора променливи. Можете да дефинирате променлива курсора като принадлежащи към SYS_REFCURSOR вид и да получите с помощта на набор от данни от процедура или функция. Например:

CREATE OR REPLACE ПРОЦЕДУРА authors_sel

(Cv_results В OUT SYS_ REFCURSOR)

Е

ЗАПОЧНЕТЕ

ОТКРИТИ cv_results ЗА

SELECT ID, first_name, last_name

ОТ автори;

END;

Процедурите за проверка могат да се извършват, както следва:

Променлива х REFCURSOR

EXEC authors_sel (: х)

PRINT х

REF тип се използва с типове обекти. Стойност REF трябва да се мисли като указател към инстанция на обекта в таблицата с обект или изгледа обект.

видове предмет. Oracle поддържа следните четири вида големи обекти:

BFILE - за външен двоичен файл съхранява указател към LOB обекти, които се управляват файлови системи външни към базата данни;

BLOB - за вътрешно двоичен обект;

CLOB - за вътрешния характер на обекта;

NCLOB - за вътрешния характер на обекта, като се вземат предвид националните набор от символи.

видове LOB дълги видове се различават най-вече от факта, че ако изберете някоя LOB тип от SELECT изявление връща указател вместо самата стойност; Освен LOB видове могат да бъдат външни.

Всеки обект LOB се състои от две части: данни и указател към данните, наречена локатор.

Петно видовете, CLOB или NCLOB може да се използва колона база данни, или променлива PL / SQL.

За да изтеглите LOB обект пакет, предлаган PL / SQL DBMS_LOB.

Процедурите и функциите, които работят на LOB типове са показани в таблица

маса

синтаксис описание
APPEND (d1, d2) Добавя d2 да d1
СРАВНИ (d1, d2, п, pos1, pos2) Сравнява п байта стойности D1 и D2
КОПИРАНЕ (D, S, N, DP, SP) Копия от п байта в г а.
FileOpen (bdata, т) Отваря BFILE тип обект в режим, определен от параметър m
LOADFROMFILE (bdata1, данни2, п, pos1, pos2) Копия н байта BFILE bdata1 всеки тип обект в данни2 обект LOB
GETLENGTH (данни) Връща дължината на посочения обект LOB
READ (данни, п, поз, Buf) Чете се обект с данни н байта
WRITE (данни, п, поз, Buf) Копия от байт буфер Buf п
EMPTY_CLOB (), EMPTY_BLOB () Създаване на "празен" обект на определен тип

<== предишната лекция | Следващата лекция ==>
| Видове PL / SQL данни

; Дата на добавяне: 01/04/2014; ; Прегледи: 925; Нарушаването на авторски права? ;


Ние ценим Вашето мнение! Беше ли полезна публикува материал? Да | не



ТЪРСЕНЕ:


Вижте също:



zdes-stroika.ru - Studopediya (2013 - 2017) на година. Не е авторът на материала, и предоставя на студентите възможност за безплатно обучение и употреба! Най-новото допълнение , Ал IP: 66.249.93.205
Page генерирана за: 0.047 сек.