оператор SELECT) және шығыс мәндерін қоңырау бағдарламасына
жібереді.
Трафиктер мен сақталған процедуралар операторды пайдаланған
кезде сақталатын процедураларды шақыруы мүмкін EXECUTE
PROCEDURE:
EXECUTE PROCEDURE <
шара атауы>
[(<параметр> [, <параметр>] . . .) ]
[RETURNING_VALUES
(<параметр>[,<параметр>]...)
| <параметр>[,<параметр >...]]
FOR SELECT DO
операторы төмендегідей форматтары бар:
FOR
<оператор SELECT>
DO
<оператор>
FOR SELECT DO
сөзінің алгоритмі келесідей. SELECT операторы
орындалады және алынған нәтижелер жиынының әр жолы үшін DO сөзі
орындалатын операнд орындалады. Бұл оператор жиі SUSPEND болып
табылады, бұл шығыс параметрлерін шақыру қосымшасына қайтаруға
әкеледі.
Бар сақталған процедураны өзгерту үшін ALTER PROCEDURE
операторын қолданыңыз. Бар сақталған процедураны жою үшін DROP
PROCEDURE
операторын қолданыңыз. Сақталған процедураларды
жасаудың кейбір мысалдары берілген.
Келесі рәсім тауар_кіріс параметрінің мазмұнымен анықталған
белгілі бір өнімді сатуға арналған барлық фактілерді береді.
CREATE PROCEDURE PRODAJA_TOVARA (
Товар_вход VARCHAR
(20) )
RETURNS (
күні_шығыс DATE, Тұтынушы_шығыс VARCHAR (2 0) ,
саны_шығыс INTEGER) AS
BEGIN
FOR SELECT
Күні, Тұтынушы, Саны FROM Сатылымдар
WHERE
Тауар =:Тауар_кіріс
INTO :
Күні_шығыс, :Тұтынушы_шығыс, :Саны_шығыс DO
SUSPEND;
END
Біріншіден, SELECT мәлімдемесі орындалады, ол сату күнін, сатып
алушының атын және шығыс сомасын қайтаратын
280
Тауарлар үлгілері Тауар_шығыс параметрінің кіріс параметріндегі
мәнмен бірдей мәнді қамтитын әр енгізу үшін тауарлар Көрсетілген
мәндер
шығыс
параметрлеріне
жазылады
(Күні_шығыс,
тұтынушы_шығыс, Номер_шығыс). Нәтижелердің әрбір жазбасын
жазғаннан кейін, SUSPEND мәлімдемесі орындалады. Шығарылатын
параметр параметрлерін шақыру бағдарламасына қайтарады және
шығыс параметрлерінің келесі бөлігін шақыру бағдарламасынан
сұрағанға дейін рәсімнің орындалуын тоқтатады. ол шақырушы
қосымшаға кіру параметрлерін бірнеше мәндерді қайтаруға болады,
өйткені бұл процедура таңдау рәсім болып табылады.
Тағы бір процедура Тұтынушы_кіріс тауарларды сатып алған
барлық клиенттердің атауын осы өнімнің орташа сатып алу мөлшерінен
асатын соманы қайтарады. Клиенттік атау клиенттің атауының орнына
бос мән болса, «Деректер көрсетілмейді».
CREATE PROCEDURE
Тұтынушы_тізім (Тауар_кіріс VAR-
CHAR(20))
RETURNS (
Тұтынушы_шығыс VARCHAR(20)) AS
DECLARE VARIABLE
Орта_саны INTEGER;
BEGIN
SELECT AVG(
саны)
FROM
Сатылымдар
WHERE
Тауар =:Тауар_кіріс
INTO :
Орташа_саны;
FOR
SELECT
Тұтынушылар
FROM
Сатылымдар
WHERE
Саны >: Орташа_саны INTO
:
Тұтынушы_шығыс DO
BEGIN
IF (:
Тұтынушы_шығыс IS NULL) THEN
Тұтынушы_шығыс = «деректер жоқ»;
SUSPEND;
END
END
Сақталған процедуралардың артықшылығы, олар бірінші кезекте
серверлік жағынан орындалады, бұл көптеген жағдайларда желілік
трафикті айтарлықтай төмендетеді; Екіншіден, бір рет жазылған және
жақсы сақталған сақталған процедураны пайдалануға болады
281
Көптеген бағдарламалар - сақталатын процедуралар,
триггерлер, клиент бағдарламалары.
Сақталған іріктеу процедурасы, әдетте, дерекқордан жеткілікті
үлкен деректерді таңдау үшін пайдаланылады. Осындай
жағдайларда деректерді іріктеу алгоритмі өте күрделі. Бұл рәсім,
әдетте, SELECT мәлімдемесінің декларативті құралы тиісті
деректерді кестелерден немесе көріністерден алудың барлық
әрекеттерін орындау үшін жеткіліксіз болғанда қолданылады. Бұл
процедура кіріс параметрлерін және қайтару параметрлерін
қайтара алады.
Сақталған процедуралар қосымшалар мен дерекқорлардың
тұтастығын жақсартады, ұжымдық операциялар мен есептеулердің
өзектілігіне кепілдік береді. Осындай процедуралардың, сондай-ақ
қауіпсіздіктің жақсаруы (деректерге тікелей қол жетімділік жоқ).
Алайда, қолданбалы логикамен сақталатын процедураларды
шамадан тыс жүктеу серверді жүктеуі мүмкін екендігін есте
сақтаңыз, бұл өнімділіктің жоғалуына әкеледі. Бұл проблема ірі
ақпараттық жүйелерді дамытуда, әсіресе, көптеген клиенттер бір
мезгілде серверге қол жеткізе алады. Сондықтан, көптеген
жағдайларда, ымыралы шешімдер қабылдау қажет: серверлік
жағынан қосымшалар логикасының бір бөлігін, ал кейбіреулері
клиенттің тарапынан (сплит логикасы бар жүйелер).
12.6.
ИНДЕКСТЕРМЕН ЖҰМЫС
Индекс —
Бұл нақты кестенің көрсетілген бағандарының
мәндерін және мән деректерін қамтитын кестенің жолдарына
сілтемелерді қамтитын дерекқор нысаны.
Индексі Осы кестедегі деректерді шығарып алу процесін
жеделдету, және кейде деректер тапсырыс жеделдету көптеген
жағдайларда беретін, белгілі бір кестеге пайдаланушы немесе
жүйемен құрылған SELECT есепте ORDER BY құрылымы негізінде
пайдаланушының өтініші бойынша қабылдады. Әрбір индекс
жолында индексті және көрсеткішті сол баған мәндері бар кестедегі
жолға жасайтын бағандардың мәні бар.
Индекстер болған жағдайда, көптеген жағдайларда деректерді
индекстеудің болмауына қарағанда тезірек жасауға болады, себебі
индекстегі мәндер реттеледі және индекстің өзі аз болады. мысал
бағандар бағандар үшін, атап айтқанда, екі мән, бар, осы үшін
құндылықтарды саны аз болуы бағандардың көрсеткіштері жасау
емес,
282
Достарыңызбен бөлісу: |