يدعم MySql5.0 والإصدارات الأحدث الإجراءات المخزنة، وقد أتيحت لي الفرصة مؤخرًا لدراسة هذا الأمر.
شكل:
إنشاء اسم العملية ([معلمات العملية[،...]]) |
إنشاء اسم الدالة ([معلمات الدالة[،...]]) |
معلمات الإجراء:
[ IN |. OUT |. INOUT ] اسم المعلمة نوع المعلمة
معلمات الوظيفة:
اسم المعلمة نوع المعلمة
نوع الإرجاع:
نوع بيانات MYSQL صالح
الخصائص:
لغة SQL |
نص الإجراء/نص الوظيفة: التنسيق كما يلي:
يبدأ |
لا أهتم بالميزات الخاصة هنا، فهي غير متوافقة مع مواصفات SQL، لذلك لا يتم أخذ المحتوى ذي الصلة للخاصية (الميزة) في الاعتبار.
//
هناك عدة نقاط يجب ملاحظتها أثناء عملية التطوير:
1. تعليقات الإجراءات المخزنة: يدعم MySQL استخدام - أو /**/ التعليقات، حيث يكون الأول عبارة عن تعليق على سطر والأخير عبارة عن تعليق مقطعي
2. يتم الإعلان عن المتغيرات أولاً باستخدام التصريح. يمكن تعديل المتغيرات المؤقتة مباشرةً باستخدام البادئة @ كمرجع.
3. عند التحرير مباشرةً باستخدام مدير MySQL، يمكنك إدخال نص الوظيفة التالي مباشرةً،
إذا قمت تلقائيًا باستيراد الإجراءات أو الوظائف في البرنامج النصي، لأن الإعدادات الافتراضية لـ MySQL هي ""؛" هو المحدد، ثم
يتم تجميع كل جملة من نص الإجراء بواسطة MySQL كإجراء مخزن، وستبلغ عملية التجميع عن خطأ؛ لذلك، يجب استخدام الكلمة الأساسية DELIMITER أعلن مسبقًا أنه
سيتم استعادة المحدد عند استخدام محدد المقطع الحالي. كما هو موضح أدناه:
الفاصل $$ |
4. يدعم MySQL عددًا كبيرًا من الوظائف المضمنة، بعضها متوافق مع قواعد البيانات التجارية الكبيرة مثل Oracle وInformix وSybase وما إلى ذلك، ولكن هناك أيضًا بعض الوظائف ذات أسماء غير متسقة ولكن وظائف متسقة أو بعضها ذو أسماء متسقة؛ أسماء ولكن وظائف مختلفة، وهذا مفيد بشكل خاص لمسؤولي قواعد البيانات الذين انتقلوا من تطوير قاعدة البيانات، ويجب عليهم الانتباه إليها.
5. تصحيح أخطاء الإجراءات أو الوظائف المخزنة: لم أدرس بعد مجموعة الأدوات المتنوعة التي توفرها MySQL، ولست متأكدًا مما إذا كانت توفر أدوات تصحيح الأخطاء، ومع ذلك، من السهل نسبيًا العثور على أخطاء التجميع، كما هو الحال بالنسبة لتصحيح أخطاء العمليات التجارية، يمكنك ذلك استخدام المقارنة الطريقة الغبية هي إنشاء جدول تصحيح وإدراج سجل في كل نقطة عملية في نص الحزمة لمراقبة عملية تنفيذ البرنامج. هذه أيضًا طريقة أكثر ملاءمة وغباءًا. ^_^
فيما يلي مثالان يقدمان خوارزمية تشفير سلسلة في كل مرة تقوم باستدعاءها بنفس معلمات الإدخال، ستحصل على نتيجة تشفير مختلفة
. ويتم تنفيذها في شكل وظائف وإجراءات على النحو التالي:
(1) الوظيفة
على سبيل المثال:
/**/ |
إنشاء وظيفة fun_addmm(inpass varchar(10)) إرجاع varchar(11)
ابدأ
بإعلان
string_in
varchar(39
)
;
/*أعلن أنا tinyint;*/
(2) العملية
إنشاء الإجراء `pro_addmm`(في inpass varchar(10)،OUTpass varchar(11)) |
نتائج التنفيذ هي كما يلي:
mysql> اتصل بـ pro_addmm('zhouys',@a); |
تحتوي خوارزمية التشفير على عدة نقاط ضعف:
1. لا تدعم الأحرف الكبيرة والصغيرة
2. لا تدعم اللغة الصينية
3. قوة التشفير ليست كافية
. يمكن للأشخاص المهتمين دراسة كيفية كتابة وظيفة فك التشفير، لذلك لن أفعل ذلك. لن أخوض في التفاصيل هنا.