Хар қандай ўзгармас ва ўзгарувчи уларнинг сақлаш формати, чеклагичлари ва ўзгариш соҳасини аниқлаб берувчи берилганлар турига эга бўлади
PL/SQL берилганлар турлари
|
| Скаляр турлар |
| Мураккаб турлар |
|
|
|
BINARY_INTEGER
|
|
CHAR
|
|
RECORD
|
|
|
DEC
|
CHARACTER
|
TABLE
|
|
|
DECIMAL
|
LONG
|
VARRAY
|
|
|
DOUBLEPRECISION
|
LONG RAW
|
|
|
|
FLOAT
|
NCHAR
| |
|
|
INT
|
NVARCHAR2
|
REF CURSOR
|
|
|
INTEGER
|
RAW
|
REF object_type
|
|
|
NATURAL
|
ROWID
|
|
|
|
NATURALN
|
STRING
|
LOB турлари
|
|
|
NUMBER
|
VARCHAR
|
|
|
|
NUMERIC
|
VARCHAR2
|
BFILE
|
|
|
PLS_INTEGER
|
|
BLOB
|
|
|
POSITIVE
|
BOOLEAN
|
CLOB
|
|
|
POSITIVEN
|
|
NCLOB
|
|
|
REAL
|
DATE
|
|
|
|
SIGNTYPE
|
|
|
|
|
SMALLINT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Number турлари
Number турлари сонли берилганларни сақлашга имкон беради.
BINARY_INTEGER
BINARY_INTEGER ишорали бутун сонлар (-2147483647 .. 2147483647) интервалда иккилик саноқ системада сақланади. Ишорани ўзгартирмасдан ҳисоблаш жараенида ишлатиш мумкин. NUMBER туридан камроқ жой талаб қилади.
BINARY_INTEGER тур остилари:
PL/SQL тилида қуйидаги тур остилар аниқланган:
NATURAL
NATURALN
POSITIVE
POSITIVEN
SIGNTYPE
NATURAL ва POSITIVE тур остилари мос равишда манфий бўлмаган ва мусбат бутун ўзгарувчиларни тавсифлайди. NATURALN ва POSITIVEN эса бутун ўзгарувчилар қиймати олдига нул қўйишни тақиқлайди. SIGNTYPE тури –1,0 ва 1 қийматга эга бўлган бутун ўзгарувчиларни тавсифлайди.
NUMBER
NUMBER тури сузувчи еки фиксирланган нуқтали сонларни
ифодалаш учун ишлатилади. У қуйидаги синтаксисга эга
NUMBER (аниқлик, масштаб)
Бу ерда аниқлик умумий рақамлар белгилар сони ( 38) ва 1.ОЕ 129 ... 9.99Е 125 қийматларни қабул қилиши мумкин. Масштаб эса ўнлик нуқтадан кейинги рақамлар сони бўлиб – 84 дан 127гача ўзгаради.
NUMBER тур остилари
Сиз қуйидаги NUMBER тур остиларини ишлатишингиз мумкин:
DEC
DECIMAL
DOUBLE
PRECISION
FLOAT
INTEGER
INT
NUMERIC
REAL
SMALLINT
DEC, DECIMAL ва NUMERIC тур остиларини максимал аниклиги 38 ўнлик ракамдан иборат фиксирланган нуктали сонларни ифодалаш учун ишлатишингиз мумкин.
INTEGER, INT ва SMALLINT тур остиларини эса максимал аниқлиги 38 ўнлик рақамдан иборат бутун сонларни ифодалаш учун ишлатишингиз мумкин.
DOUBLE PRECISION ва FLOAT тур остиларини максимал аниқлиги 38 ўнлик рақамдан иборат сузувчи - нуқтали сонларни ифодалаш учун ишлатишингиз мумкин.
REAL тур остини максимал аниқлиги 18 ўнлик рақамдан иборат сузувчи - нуқтали сонларни ифодалаш учун ишлатишингиз мумкин.
PLS_INTEGER
PLS_INTEGER тури -2147483647 .. 2147483647 интервалдаги ишорали бутун сонларни ифодалаш учун ишлатилади.
Белгили турлар
CHAR
CHAR – фиксирланган узунликдаги белгили берилганларни ифодалайди. Унинг синтаксиси:
CHAR [(максимал узунлиги)],
Максимал узунлиги CHAR турдаги базавий устунлар учун 2000 байт. Мумкин бўлган максимал узунлиги 32767.
Тур остилари: CHARACTER
STRING
VARCHAR2
VARCHAR2 - ўзгарувчи узунликдаги белгили берилганларни ифодалайди. Унинг синтаксиси:
VARCHAR 2 (максимал узунлиги)
Бу ерда максимал узунлиги VARCHAR2 турдаги базавий устунлар учун 2000 байт. Мумкин бўлган максимал узунлиги 32767.
Тур остилари: VARCHAR
STRING
LONG
LONG - ўзгарувчи узунликдаги белгили қаторларни ифодалайди. Унинг синтаксиси:
LONG (максимал узунлиги)
Бу ерда максимал узунлиги LONG турдаги базавий устунлар учун 2147483647 байт. Максимал узунлиги LONG турдаги ўзгарувчилар учун 32760 байт
LONG RAW
LONG RAW - ўзгарувчи узунликдаги бинар берилганларини ва байтли қаторларни ифодалайди. Унинг синтаксиси:
LONG RAW (максимал узунлиги)
Бу ерда максимал узунлиги LONG RAW турдаги базавий устунлар учун 2147483647 байт. Максимал узунлиги LONG RAW турдаги ўзгарувчилар учун 32760 байт. LONG RAW турдаги берилганларни PL/SQL томонидан интерпретация қилинмайди
RAW
RAW - ўзгарувчи узунликдаги бинар берилганларини ва байтли қатор-ларни ифодалайди. Унинг синтаксиси:
RAW (максимал узунлиги)
Бу ерда максимал узунлиги RAW турдаги базавий устунлар учун 2000 байт. Максимал узунлиги RAW турдаги ўзгарувчилар учун 32760 байт. RAW турдаги берилганларни PL/SQL томонидан интерпретация қилинмайди. Расмлар ва графикларни сақлаш учун қулайдир.
BOOLEAN
BOOLEAN тури TRUE, FALSE ва NULL қийматларни ифодалаш учун ишлатилади.
DATE
DATE тури 1 январь 4717 эрамиздан олдин 31 декабрь 4712 йилгача фиксирланган узунликдаги санани ифодалаш учун ишлатилади.
ROWID
ROWID – псевдоустун бўлиб бир қийматли равишда қаторни ифодалайди.
Унинг формати BBBBBBBB.RRRR.FFFF.
Бу ерда
BBBBBBBB – берилганлар базасидаги блокнинг номери
RRRR - блокда қаторнинг тартиб номери
FFFF - берилганлар базасидаги файлнинг номери.
(Хаммаси 16 лик системада)
Мисол. 0000000Е . 000А. 0007. псевдоустун жисмонан
7-нчи файл
15-нчи блок
11-нчи қатор
сақланади.
NLS белгили турлари
NLS белгили турлари миллий тиллардаги белгилар тўпламини ифодалаш учун ишлатилади. NCHAR ва NVARCHAR2 буларга мисол бўла олади.
LOB турлари
LOB (large object) турлари BFILE, BLOB, CLOB ва NCLOB иборат бўлиб (матн, расм, видеоклип ва товуш каби) тузилмаланмаган берилганларни ифодалаш учун ишлатилади. Унинг ўлчови 4 ГБ ошмаслиги лозим.
BFILE
BFILE берилганлар тури катта ҳажмдаги бинар объектларни базадан ташқарида жойлашган операцион тизим файлларида сақлаш учун ишлатилади. Хар бир BFILE ўзгарувчиси файл локаторини сақлайди. Файл локатори серверда жойлашган катта бинар файл ҳақида маълумотдан таркиб топган. Ушбу маълумот файл тўлиқ йўли номини аниқловчи директория ҳамроҳидан иборат. BFILE фақат ўқиб бўлади холос.
BLOB
BLOB берилганлар тури катта ҳажмдаги бинар объектларни базада сақлаш учун ишлатилади. Хар бир BLOB ўзгарувчиси локаторни сақлайди. Локатор катта бинар объект ҳақидаги маълумотдан таркиб топган. BLOB транзакцияларда қатнашиши мумкин ва уларни DBMS_LOB ёки OCI пакетлари ёрдамида ўзгартириш мумкин.
СLOB
СLOB берилганлар тури катта ҳажмдаги бир байтли белгили берилганлар блокини базада сақлаш учун ишлатилади. Хар бир СLOB ўзгарувчиси локаторни сақлайди. Локатор катта ҳажмдаги бир байтли белгили берилганлар блоки ҳақидаги маълумотдан таркиб топган. CLOB транзакцияларда қатнашиши мумкин ва уларни DBMS_LOB ёки OCI пакетлари ёрдамида ўзгартириш мумкин.
NСLOB
NCLOB берилганлар тури катта ҳажмдаги кўп байтли белгили NCHAR турдаги берилганлар блокини базада сақлаш учун ишлатилади. Хар бир NСLOB ўзгарувчиси локаторни сақлайди. Локатор катта ҳажмдаги кўп байтли белгили NCHAR турдаги берилганлар блоки ҳақидаги маълумотдан таркиб топган. NCLOB транзакцияларда қатнашиши мумкин ва уларни DBMS_LOB ёки OCI пакетлари ёрдамида ўзгартириш мумкин.
Фойдаланувчи томонидан аниқланган турлар
PL/SQL блоки, қисмдастур ва пакетларнинг эълон қилиш қисмида сизх ўзингизни туростиларингизни аниқлашингиз мумкин. Намуналар келтирамиз:
DECLARE
SUBTYPE BirthDate IS DATE NOT NULL; -- based on DATE type
SUBTYPE Counter IS NATURAL; -- based on NATURAL subtype
TYPE NameList IS TABLE OF VARCHAR2(10);
SUBTYPE DutyRoster IS NameList; -- based on TABLE type
TYPE TimeRec IS RECORD (minutes INTEGER, hours INTEGER);
SUBTYPE FinishTime IS TimeRec; -- based on RECORD type
SUBTYPE ID_Num IS emp.empno%TYPE; -- based on column type
CURSOR c1 IS SELECT * FROM dept;
SUBTYPE DeptFile IS c1%ROWTYPE; -- based on cursor rowtype
Аммо, тур ўлчовини кўрсатиш мумкин эмас. Масалан қуйидаги эълонлар нотўғри бўлади:
DECLARE
SUBTYPE Accumulator IS NUMBER(7,2); -- illegal; must be NUMBER
SUBTYPE Delimiter IS CHAR(1); -- illegal; must be CHAR
Фойдаланувчи томонидан аниқланган турлар одатдагидек ишлатилади:
DECLARE
SUBTYPE Counter IS NATURAL;
rows Counter;
DECLARE
SUBTYPE Accumulator IS NUMBER;
total Accumulator(7,2);
DECLARE
temp NUMBER(1,0);
SUBTYPE Scale IS temp%TYPE;
x_axis Scale; -- magnitude range is -9 .. 9
y_axis Scale;
BEGIN
x_axis := 10; -- raises VALUE_ERROR
Берилганлар турларини ўзгартириш
Баъзан қийматларни бир турдан бошқа турга айлантиришга тўғри келади. Бу ишни ошкор ёки ошкормас тарзда амалга ошириш мумкин. Ошкор усулда ички қурилган функциялардан фойдаланиш мумкин
Ошкормас тарзда ўзгаритириш жадвали.
|
BIN_INT
|
CHAR
|
DATE
|
LONG
|
NUMBER
|
PLS_INT
|
RAW
|
UROWID
|
VARCHAR2
|
BIN_INT
CHAR
DATE
LONG
NUMBER
PLS_INT
RAW
UROWID
VARCHAR2
|
X
X
X
X
|
X
X
X
X
X
X
X
X
|
X
X
|
X
X
X
X
X
X
X
|
X
X
X
X
|
X
X
X
X
|
X
X
X
|
X
X
|
X
X
X
X
X
X
X
X
|
Ўзгарувчи ва ўзгармасларни эълон қилиш
Сизнинг дастурингиз қийматларни ўзгарувчилар ва ўзгармасларда сақлайди. Сиз ўзгарувчи ва ўзгармасларни PL/SQL блоки, қисмдастур ва пакетларнинг эълон қилиш қисимида эълон қилишингиз мумкин.
birthday DATE;
emp_count SMALLINT := 0;
pi REAL := 3.14159;
radius REAL := 1;
area REAL := pi * radius**2;
birthday DATE;
birthday DATE := NULL;
credit_limit CONSTANT REAL := 5000.00;
blood_type CHAR := 'O';
blood_type CHAR DEFAULT 'O';
hours_worked INTEGER DEFAULT 40;
employee_count INTEGER := 0;
acct_id INTEGER(4) NOT NULL := 9999;
credit REAL(7,2);
debit credit%TYPE;
balance NUMBER(7,2);
minimum_balance balance%TYPE := 10.00;
my_dname scott.dept.dname%TYPE;
Do'stlaringiz bilan baham: |