Stored Procedures چییە؟

لە MySQL، Stored Procedure بریتییە لە کۆمەڵێک فەرمانی SQL کە پێکەوە کۆکراونەتەوە و لە ناو داتابەیسدا پاشەکەوت کراون. بەکارهێنانی ئەم ڕێگەیە وادەکات کۆدەکانت دووبارە بەکارهێنراو (Reusable) بن، کاتت بۆ بگەڕێتەوە و ئەدای داتابەیسەکەشت باشتر بێت.

ئەگەر پرسیارێکی SQL-ت هەیە کە زۆر جار دووبارەی دەکەیتەوە، باشترین ڕێگا ئەوەیە بیکەیتە Stored Procedure تا بە یەک فەرمان جێبەجێی بکەیت.

دروستکردنی یەکەم Stored Procedure

بۆ دروستکردنی پرۆسێسێکی نوێ، ئێمە وشەی کلیل DELIMITER بەکاردەهێنین بۆ ئەوەی بە MySQL بڵێین کە کۆتایی فەرمانەکەمان لە کوێدایە.

DELIMITER //

CREATE PROCEDURE GetAllUsers()
BEGIN
    SELECT * FROM users;
END //

DELIMITER ;

لە نموونەی سەرەوەدا، ئێمە پرۆسێسێکمان بە ناوی GetAllUsers دروست کرد. کاتێک ئەم کۆدە جێبەجێ دەکەیت، MySQL ئەم پرۆسێسە پاشەکەوت دەکات. هەڵەی باو لێرەدا ئەوەیە کە بیرت دەچێت DELIMITER بگێڕیتەوە سەر دۆخی ئاسایی، کە دەبێتە هۆی تێکچوونی فەرمانەکانی دواتر.

بانگکردنی Stored Procedure

دوای ئەوەی پرۆسێسەکەت دروست کرد، دەتوانیت بە ئاسانی بە فەرمانی CALL بانگی بکەیت و ئەنجامەکەی ببینیت.

CALL GetAllUsers();

ئەم فەرمانە هەموو ئەو کۆدانەی لە ناو BEGIN و END دا نووسیوتە جێبەجێ دەکات. ئەمە ڕێگەیەکی زۆر خێرایە بۆ ئەنجامدانی کارەکان بەبێ ئەوەی پێویست بکات هەموو جارێک هەمان SELECT بنووسیتەوە.

بەکارهێنانی Parameter لە پرۆسێسەکان

زۆربەی کات پێویستمان بەوەیە زانیاری بدەینە پرۆسێسەکە، بۆ ئەمەش Parameter بەکاردەهێنین. با سەیری نموونەیەکی بەکارهێنانی IN بکەین:

DELIMITER //

CREATE PROCEDURE GetUserById(IN userId INT)
BEGIN
    SELECT * FROM users WHERE id = userId;
END //

DELIMITER ;

لێرەدا ئێمە بەکارهێنەرێک بەپێی ID-کەی دیاری دەکەین. کاتێک بانگی دەکەیت، دەبێت ژمارەیەک لە نێوان کەوانەکاندا بنووسیت، بۆ نموونە CALL GetUserById(5);.

ئاگاداربە: ناوی Parameter-ەکان نابێت لەگەڵ ناوی ستوونەکانی ناو خشتەکە یەک بگرێتەوە، چونکە لە کاتی جێبەجێکردن ڕەنگە MySQL تووشی هەڵە ببێت.

سڕینەوەی Stored Procedure

ئەگەر پرۆسێسەکەت چیتر پێویست نەبوو، دەتوانیت بە ئاسانی بیسڕیتەوە بە بەکارهێنانی فەرمانی DROP.

DROP PROCEDURE IF EXISTS GetAllUsers;

سوودەکانی بەکارهێنانی Stored Procedures

  • کەمکردنەوەی قەرەباڵغی نێوان ئەپڵیکەیشن و داتابەیس.
  • پاراستنی ئاسایش؛ دەتوانیت ڕێگە بە بەکارهێنەر بدەیت پرۆسێسەکە بانگ بکات بەبێ ئەوەی دەستی بە خشتەکان بگات.
  • ئاسانکاری لە نوێکردنەوەی کۆد؛ تەنها لە یەک شوێن کۆدەکە دەگۆڕیت.

ئەرکی ڕاهێنان

ئێستا کاتی ئەوەیە خۆت تاقی بکەیتەوە! پرۆسێسێک دروست بکە بە ناوی 'GetUsersByRole' کە Parameter-ێکی لە جۆری VARCHAR وەربگرێت و هەموو ئەو بەکارهێنەرانە پیشان بدات کە ڕۆڵێکی دیاریکراویان هەیە (بۆ نموونە 'admin').

ئەمانە ئەم فێرکارییەیان تەواوکردووە

1 فێرخواز تەواویان کردووە