Основы (асослар)


Download 0.95 Mb.
bet46/58
Sana28.12.2022
Hajmi0.95 Mb.
#1011518
1   ...   42   43   44   45   46   47   48   49   ...   58
Bog'liq
PL-SQL Маъруза матни

SELF параметри


MEMBER методлари ички қурилган номланган SELF параметрига эга бўлиб, у объект тури нусхасини билдиради. STATIC методлар эса ушбу хоссага эга эмаслар.
Метод танасида SELF параметри методи чакирилган объектни белгилайди. Масалан қуйидаги мисолда transform методи SELF параметрини IN OUT параметри тарзида эълон қилади:
CREATE TYPE Complex AS OBJECT (
MEMBER FUNCTION transform (SELF IN OUT Complex) ...

Сиз SELF параметри учун бошқа берилганлар турини аниқлаб билмайсиз. Агарда MEMBER функцияларида SELF параметри эълон қилинмаган бўлса, ушбу параметр IN тарзда қабул қилинади. Аммо агар MEMBER процедураларида SELF параметри эълон қилинмаган бўлса, ушбу параметр IN OUT тарзда қабул қилинади. Сиз OUT туридаги SELF парметрини аниқлаб билмайсиз.


Методлар SELF атрибутларига бевосита мурожааат қилишлари мумкин:
CREATE FUNCTION gcd (x INTEGER, y INTEGER) RETURN INTEGER AS
-- x ва у энг катта бўлинувчисини топади
ans INTEGER;
BEGIN
IF (y <= x) AND (x MOD y = 0) THEN ans := y;
ELSIF x < y THEN ans := gcd(y, x);
ELSE ans := gcd(y, x MOD y);
END IF;
RETURN ans;
END;

CREATE TYPE Rational AS OBJECT (


num INTEGER,
den INTEGER,
MEMBER PROCEDURE normalize,
...
);

CREATE TYPE BODY Rational AS


MEMBER PROCEDURE normalize IS
g INTEGER;
BEGIN
g := gcd(SELF.num, SELF.den);
g := gcd(num, den); -- олдинги жумлага эквивалент
num := num / g;
den := den / g;
END normalize;
...
END;

Агар SQL жумласидан бўш нусха MEMBER методини чақирсангиз (яъни SELF бўш) , метод чақирилмайди ва бўш қиймат қайтарилади. Агар процедуравий жумладан бўш нусха MEMBER методини чақирсангиз (яъни SELF бўш) , PL/SQL олдиндан аниқланган SELF_IS_NULL номли мустаснони чақиради.


Номлаш қоидаси


Пакетлаштирилган процедуралар каби ҳар хил методларни (функция ёки процедурани) бир ном билан номлаш мумкин, агар ушбу методларнинг формал параметрлари сони, жойлашиш тартиби ва берилганлар тури оиласи фарқ қилса. Аммо иккита ‘member’ функциялар фақат қайтариш қийматининг тури билан фарқ қилса, бу функцияларни бир хил номлаш мумкин эмас.

Download 0.95 Mb.

Do'stlaringiz bilan baham:
1   ...   42   43   44   45   46   47   48   49   ...   58




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling