Э. В. Фуфаев, Д. Э. Фуфаев



жүктеу 10,13 Mb.
Pdf просмотр
бет57/93
Дата19.11.2018
өлшемі10,13 Mb.
#21568
түріОқулық
1   ...   53   54   55   56   57   58   59   60   ...   93

Сақталатын  рəсімді  өздігінен  тек  ДҚ  иесі  ғана  жəне  сақталатын 
рəсімді қҧрушы орындай алады. Алайда сақталатын рəсімнің иесі оны 
іске қосу ережелерін басқа пайдаланушыларға табыстай алады.  
Сақталатын  рəсімнің  аты  жазылатын  бағдарламалау  тілінде 
сəйкестендіруші 
болып 
табылады 
жəне 
осы 
тілдегі 
сəйкестендірушілерге қойылатын барлық талаптарға сəйкес келу керек.  
MS SQL Server-де сақталатын рəсім келесі оператормен жасалады: 
CREATE PROCEDURE <рəсімнің_аты> [;<нҧсқа>] 
{(@параметр1деректер_тҥрі} 
[VARYING] [=<өздігінен_мəні>] [OUTPUT]] [,.параметр^] 
[ WITH 
{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}] 
[FOR REPLICATION] 
A

Р
ӘСІМНІҢ ДЕНЕСІ
 
Мҧндағы  міндетті  емес  VARYING  өзекті  сөзі  бҧдан  бҧрын 
айқындалған параметр ҥшін өздігінен белгіленген мəнді айқындайды. 
RECOMPILE  өзекті  сөзі  қҧрылатын  сақталатын  рəсімнің 
компиляция  режимін  айқындайды.  Егер  RECOMPILE  өзекті  сөзі 
белгіленсе,  онда  рəсім  орындауға  шақырылған  сайын  қайта 
компиляцияланады.  Бҧл  рəсімнің  орындалуын  баяулатуы  мҥмкін. 
Алайда  егер  осы  сақталатын  рəсіммен  өңделетін  деректер  алғаш 
шақыру кезінде жасалған бҧдан бҧрынғы орындау жоспары одан арғы 
шақырулар  кезінде  мҥлде  тиімсіз  болатындай  қарқынды  болса,  онда 
осы рəсімді қҧру кезінде осы параметрді қолданған жөн.  
ENCRYPTION өзекті сөзі сақталатын рəсімнің бастапқы мəтіні ДҚ-
да  сақталмайтын  режимді  айқындайды.  Мҧндай  режим  сақталатын 
рəсімдер болып табылатын зияткерлік өнімге авторлық қҧқықты сақтау 
ҥшін  қолданылады.  Жасап  шығарушы  жасап  шығарылған рəсімдердің 
бастапқы мəтіндері тапсырыс берушіде жҧмыс істейтін ДҚ əкімшісіне 
қолжетімді болғанын қаламаса, осындай режим жиі қолданылады.  
Алайда  сақталатын  рəсімнің  атынан  басқа  барлық  қалған 
параметрлер  міндетті  емес.  Рəсімдер  рəсім  немесе  қызмет-рəсімдер 
болуы  мҥмкін.  Бҧл  ҧғымдар  мҧнда  жоғары  деңгейлі  бағдарламалау 
тіліндегідей  дəстҥрлі  тҥсіндіріледі.  Сақталатын  қызмет-рəсім  рəсімнің 
атын айқындайтын ауыспалыға тағайындалатын мəнді қайтарады.  
 


Рәсі
Рəсім мəнді айқын тҥрінде қайтармайды, алайда онда осы параметрдің 
шыға  беріс  болып  табылатынын  айқындайтын  OUTPUT  өзекті  сөзі 
пайдаланылуы мҥмкін. 
Қарапайым сақталатын рəсімнің бірнеше мысалын қарастырайық. 
/* параметрлер кітапханасындағы нақты кітап данасының болуын 
тексеретін рəсім: 
@ISBN  —  кітаптың  шифрі  —  рəсім  дана  санына  тең  параметрді 
қайтарады.  Егер  нөл  қайтып  келсе,  онда  бҧл  кітапханадағы  осы 
кітаптың  бос  данасы  жоқ  екенін  білдіреді.  */  CREATE  PROCEDURE 
COUNT_EX ((@ISBN varchar (12)) 
AS 
/* ішкі ауыспалының анықтаймыз */ 
DECLARE (@TEK_COUNT int 
/* тиісті операторды орындаймыз SELECT 
Қазіргі  уақытта  оқырмандардың  қолындағы  емес,  кітапханадағы 
даналарды ғана санаймыз */ 
SELECT @TEK_COUNT = select count (*) 
FROM EXEMPLAR 
WHERE ISBN = @ISBN 
AND READER_@ID Is NULL AND EXIST = True /* 0 — 
кітапханадағы осы кітаптың бірде бір бос данасының жоқтығын 
білдіреді */ 
RETURN @TEK_COUNT 
Сақталатын  рəсім  бірнеше  тəсілмен  шақырылуы  мҥмкін. 
Қарапайым тəсіл - операторды пайдалану: 
EXEC  <рəсімнің  аты><кіреберіс  параметрдің  мəні1>...  <шығаберіс 
параметрге арналған ауыспалының аты 1>... 
Бҧл  ретте  барлық  кіреберіс  жəне  шығаберіс  параметрлер  міндетті 
тҥрде рəсімде айқындалған тəртіппен белгіленуі керек.  
Мысалы,  егер  ISBN  966-7393-0809  бар  «Oracle8.  Пайдаланушы 
энциклопедиясы»  кітаптар  данасының  санын  табу  керек  болса,  онда 
бҧдан бҧрын жасалған сақталатын рəсімді шақыру мəтіні төмендегідей 
болу керек: 
/*Екі  ауыспалы  айқындалды:  осы  кітаптың  @Ntek  данасы 
кітапханада  бар;  @ISBN  —  кітаптың  халықаралық  шифрі  */  declare 
@Ntek int 
DECLARE @ISBN VARCHAR(14) 
/* Ауыспалының мəнін тағайындаймыз @ISBN */ 


SELECT @ISBN = '966-7393-08-09' 
/*  @Ntek  ауыспалыға  COUNT_EX  сақталатын  рəсімді  орындау 
нəтижелерін тағайындаймыз*/ 
EXEC @Ntek =COUNT_EX:2 @ISBN 
Егер  сақталатын  рəсімнің  бірнеше  нҧсқасы  айқындалса,  онда 
шақыру  кезінде  орындауға  арналған  нақты  нҧсқаның  нөмірін  көрсете 
аласыз.  Мысалы,  COUNT_EX  рəсімнің  2  нҧсқасында  осы  рəсімді 
орындайтын соңғы оператордың тҥрі төмендегідей 
EXEC @Ntek =COUNT_EX:2 @ISBN 
Алайда,  егер  рəсімде  кіреберіс  параметрлердің  мəндері  өздігінен 
айқындалса,  онда  рəсімді  іске  қосу  кезінде  барлық  параметрдің  мəні 
көрсетілмеуі  мҥмкін.  Бҧл  жағдайда  рəсімді  шақыру  операторы  келесі 
тҥрде жазылуы мҥмкін: 
EXEC  <рəсімнің аты><параметрдің  аты1>=<параметрдің  мəні 1>... 
<параметрдің атыN>=<параметрдің мəніN>... 
Мысалы, белгілі бір баспа белгілі бір жылы басып шығарған кітап 
санын  есептейтін  рəсімді  қҧрамыз.  Рəсімді  қҧру  кезінде  басып 
шығарылған  жылы  ретінде  өздігінен  ағымдағы  жылдың  мəнін 
белгілейміз. 
CREATE  PROCEDURE  COUNT_BOOKS  (@YEARIZD  int  =  Year 
(GetDate()). 
@PUBLICH varchar (20)) 
/*  белгілі  бір  жылы  басып  шығарылған,  нақты  баспаның  кітап 
санын  есептеу  рəсімі.  Параметрлері:  @YEARIZD  int  басып 
шығарылған жылы жəне 
@PUBLICH баспаның аты */ 
AS 
DECLARE @TEK_Count int 
SELECT @TEK_COUNT = SELECT COUNT (ISBN) 
FROM BOOKS 
WHERE YEARIZD =@YEARIZD AND PUBLICH = @PUBLICH 
SELECT операторымен орындаумен бірге оны орындау нəтижелері 
бҧдан бҧрын айқындалған @lLK_Count ауыспалыға тағайындалады*/ 
/*  рəсімнің  жҧмыс  істеу  нəтижесін  қалыптастыру  кезінде  біз 
кітапханада белгіленген жылы шығарылған кейбір баспаның бірде бір 
кітабы  болмауы  мҥмкін  екенін  есепке  алуымыз  керек.  Бҧл  жағдайда 
SELECT  сҧранысын  орындау  нəтижесінің  мəні  белгісіз  болады,  бірақ 
санды  мəндерді  талдаған  жөн.  Сондықтан  біз  қайтарылатын  мəн 
ретінде nl,n2,...,nm мəндер тізімінен алғашқы нақты мəнді, яғни NULL 
тең  болмайтын  мəнді  қайтаратын,  Transact  SQL  COALESCE 
(nl,n2,...,nm)  тілінің  арнайы  кіріктірілген  қызметінің  жҧмыс 
нəтижелерін пайдаланамыз*/ 


жүктеу 10,13 Mb.

Достарыңызбен бөлісу:
1   ...   53   54   55   56   57   58   59   60   ...   93




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау