э.ғ.д.,профессор
Орынбеков А.О, математика магистрі, аға оқытушы Бурлибаева Ш.М., математика
магистрі, аға оқытушы Аманбаева А.
ДҚБЖ MYSQL сақталатын процедура
Сақталатын
процедура – бұл қайталанатын әрекеттерінің инкапсуляция
әдісі. Сақталатын процедураларда айнымалыларды жариялауға, деректер
ағындарын басқару, сонымен қатар бағдарламалаудың
басқа техникасын қолдану.
// -
MySQL клиентке SQL өрнегінің аяқталуын білдіретін шектеу.
Сақталатын процедураны
құру
01
DELIMITER //
02
03
CREATE PROCEDURE `p2` ()
04 LANGUAGE
SQL
05 DETERMINISTIC
06 SQL
SECURITY DEFINER
07 COMMENT
'A procedure'
08 BEGIN
09 SELECT
'Hello World !';
10 END//
Кодтің бірінші бөлігі сақталатын процедураны құрайды.
Келесіде- міндетті емес параметрлер енгізілген. Ары қарай сақталатын
процедураның аты, содан кейін сақталатын процедураның тұлғасы.
Бір атты бірнеше процедураларды құруға болмайды. Сақталатын
процедураның ішінде деректер қорын өзгертетін өрнектер болмау
керек.
Сақталатын процедуралардың 4 мінездемелері:
- Language: SQL үнсіз келісім бойынша, көшіруді қамыту мақсатында.
-
Deterministic: егер сақталатын
процедура үнемі сол бір нәтижені қайтарса және сол бір енгізу
параметрлерді қабылдаса Бұл репликация және тіркеу процесі үшін.
Үнсіз келісі бойынша NOT DETERMINISTIC мәні.
- SQL Security: шақыру кезінде пайдаланушының құқығын тексеріс
жүргізіледі. INVOKER – бұл сақталатын процедураны шақыратын
пайдаланушы. DEFINER – сақталатын процедураны құрылушы. Үнсіз
келісі бойынша DEFINER мәні.
- Comment: құжаттылау мақсатында, үнсіз келісі бойынша
"" мәні.
Сақталатын процедураны шақыру
Сақталатын процедураны шақыру үшін CALL кілтті сөз енгізілінеді,
содан кейін процедуранң аты, ал жақшада параметрлерді көрсету
қажет (айнымалылар немесе мәндер). Жақшалар міндетті түрде
қойылады.
1 CALL stored_procedure_name (param1, param2, ....)
2
3 CALL
procedure1(10 , 'string parameter' , @parameter_var);
Сақталатын процедураны өзгерту
MySQL- де процедураларды өзгертуге
ALTER PROCEDURE өрнек қолданылады,
бірақ ол бірнеше мінездемелерді өзгертуге қолайлы. Егер параметрлерді
немесе процедураның тұлғасын өзгерту қажет болса,
онда процедураны жойып, қайта құру қажет болады.
Сақталатын процедураны жою
1 DROP
PROCEDURE IF EXISTS p2;
Бұндай процедура жоқ болған жағдайда IF EXISTS өрнек
қатені табады.
Сақталатын процедураға параметрлерді беру
- CREATE PROCEDURE proc1 (): параметрлердің бос тізімі
- CREATE PROCEDURE proc1 (IN varname
DATA-TYPE): бір енгзілетін параметр. Слово IN қызметті сөзді
енгізу міндетті емес, себебі параметрлер – үнсіз келісім бойынша - IN (енгізілетін).
- CREATE PROCEDURE proc1 (OUT varname DATA-TYPE): бір қайтаратын параметр.
- CREATE PROCEDURE proc1 (INOUT varname DATA-TYPE): бір параметр бір мезгілде
енгізілетін және қайтаратын.
Бірнеше әр түрлі типті параметрлерді енгізуге болады.
IN параметрдің мысалы
1 DELIMITER
//
2
3 CREATE PROCEDURE
`proc_IN` (IN var1 INT)
4 BEGIN
5 SELECT var1
+ 2 AS result;
6 END//
OUT параметрдің мысалы
1 DELIMITER
//
2
3 CREATE PROCEDURE
`proc_OUT` (OUT var1 VARCHAR(100))
4 BEGIN
5 SET var1 =
'This is a test';
6 END //
INOUT параметрдің мысалы
1 DELIMITER
//
2
3 CREATE PROCEDURE
`proc_OUT` (OUT var1 INT)
4 BEGIN
5 SET var1 = var1 * 2;
6 END //
Айнымалыларды құру және процедура ішінде сақтау
Айнымалыларды деректер типтерімен бірге BEGIN/END блоктың басында анық жариялау қажет. Айнымалыны
жарияланғаннан кейін сессия, литералдарының айнымалылары немесе бағаналар
аттары орналасқан жерде пайдалануға болады.
Айнымалының жариялау синтаксисі:
1 DECLARE varname DATA-TYPE DEFAULT defaultvalue;
Бірнеше
айнымалыларды жариялайық:
1 DECLARE
a, b INT DEFAULT 5;
2
3 DECLARE
str VARCHAR(50);
4
5 DECLARE
today TIMESTAMP DEFAULT CURRENT_DATE;
6
7 DECLARE
v1, v2, v3 TINYINT;