حفظ الإجراءات في SQL. إجراءات Vidalennya التي يتم اتخاذها. رابط العودة إلى الإجراءات التي تم حفظها

إذا كانت هناك إجراءات التالية يجب حفظها ، وإذا كنت مذنباً بانتصار بيان في SQL Server؟

دعني أسمح لك بإنشاء مشروبات ديناميكية ، كيف يمكننا تحسين المعلمات؟

أيهما هو الأكثر وضوحًا ، وأيهما هو الأفضل ، وأيهما الأقل؟

راجع الإجراءات التي يتم حفظها ، هل يتم حفظ الذاكرة باستمرار؟

ماذا يعني ، دعنا نقول ، أن البيانات تنشئ جدولًا افتراضيًا وأن الإجراءات تنشئ جدولًا للمواد؟

كن لطيفًا ، أخبرني عن النقاط ، رائحة الياكشو.

تجميع الحلول من الويب "لماذا يوجد فرق بين الإجراءات والمدخرات والضرائب؟"

مشاهدة ملف є افتراضيةالطاولة. يمكنك الوصول إلى عدد الجداول في التقديم والفوز بطلب تقديم البيانات ، لذلك تم العثور على البيانات في جدول واحد.

تم حفظ إجراء تحديد معلمات الوظيفة المحددة ... بحيث يتم تحديث إدخال البيانات أو تدوير القيم الأخرى أو مجموعة البيانات.

تم إنشاء الإخطارات والإجراءات التي يتم حفظها - للانتقام من المعلومات الواردة من Microsoft حول هؤلاء ، وما إذا كان الفوز بها ولماذا.

لنفترض أن لدي جدولين:

tbl_user Stovptsi: .user_id، .user_name، .user_pw

tbl_profile ستوبشي:. Profile_id، .user_id. Profile_description

لذلك ، بينما أحاول إحضار هذه الجداول كثيرًا ... بدلاً من ذلك ، للعمل في CLEAR peice sql ، سأستخدم نظرة ، على سبيل المثال:

إنشاء عرض vw_user_profile AS حدد A.user_id ، B.profile_description من tbl_user A يسارًا ينضم إلى tbl_profile B على A.user_id = b.user_id GO

لذلك ، في المستقبل ، أريد أن أطلب وصف profile_description لمعرف koristuvach ... كل ما أحتاجه للسرقة ،

حدد profile_description من vw_user_profile حيث user_id =ID

يمكن تعديل هذا الرمز في الإجراء المحفوظ ، على سبيل المثال:

قم بإنشاء إجراء dbo.getDescID int مع بدء تحديد profile_description من vw_user_profile حيث user_id =ID END GO

لذلك يمكنني الهاتف

Dbo.getDesc 25

وأزلت الوصف الخاص بمعرف koristuvach 25 de 25 - المعلمة الخاصة بك.

من الواضح أن BAGATO أكثر ، لكن الفكرة الرئيسية أقل.

في الخلف ، عليك أن تفهم أن الإهانات هي كلام مختلف. يعتبر توفير الإجراءات أكثر انتصارًا في عبارات INSERT-UPDATE-DELETE. هذه الطلبات مبررة لبيانات SELECT. وأنت مذنب بالاستياء المنتصر.

لا يمكنك تغيير البيانات في الآفاق.

إلقاء نظرة: هذا جدول افتراضي يتكون من صف أو أكثر من الصفوف والأعمدة من جداول قاعدة بيانات حقيقية مختلفة. قالب Tse rowk_v و stovpts_v k_lkoh table. لا يمكنك تمرير أي معلمات هنا.

إجراءات الحفظ: استخدم مجموعة من عبارات SQL في وقت مبكر ، والتي يمكنك من خلالها تحرير معلمات مثل بيانات الإدخال وإزالة بيانات الإخراج.

يمكن إبراز المظاهر في إجراء تم حفظه ، ولكن لا يمكن عرض إجراء تم حفظه في طرق العرض…!

يُنتصر إجراء shovischa إذا لم يكن SQL العادي كافيًا. يجب تغيير إجراءات الحفظ ودورات ودورات الإجراءات الأخرى المحفوظة. برمجة Tse mova ، وليس mova zapitіv.

    المظاهر ثابتة. فكر فيها كما لو كانت جداول جديدة ذات تخطيط بسيط ، ويتم إنشاء البيانات الموجودة فيها لمجرد نزوة ، مع ملاحظة غير مباشرة ، والتي من خلالها قمت بإنشاء كل شيء. كما هو الحال في أي جدول SQL ، يمكنك الفرز والتصفية حسب WHERE و GROUP BY و ORDER BY.

    تسي لتنحي جانباً حقيقة أنك تعمل.

    تسي لوضع قاعدة البيانات. عذرا ، فقط قم بتشغيل الاستعلام وتصفية النتيجة. ومع ذلك ، تسمح لك قواعد البيانات ، مثل Oracle ، بإنشاء عبارات "محسوسة" ، كما هو الحال في الجدول الرئيسي ، حيث يتم تحديثها تلقائيًا عند تغيير نوع البيانات الأساسية.

    يسمح لك تجسيد البيان بإنشاء فهارس في أعمدة البيان (خاصة في الأعمدة المحسوبة ، والتي لا توجد في أي مكان في قاعدة البيانات).

    أنا لا أفهم ما تقوله.

يكمن الاختلاف الرئيسي في حقيقة أنه إذا طلبت بيانًا ، فسيتم إدراج التخصيص في طلبك. يمكن أن يعطي الإجراء نتائج ، لكن يتم تجميعه وبسرعة. الخيار الثاني هو فهرسة الإشعار.

عرض SQL هو جدول افتراضي يعتمد على استعلام SQL SELECT. يتم تقديم الطلبات لجدول واحد أو أكثر من جداول قاعدة البيانات أو لتطبيقات أخرى. هذه العلامة الصغيرة لقاعدة البيانات ، تمامًا مثل الإجراء المتخذ ، هي مجموعة من عبارات Transact-SQL ، مطوية في خطة تنفيذ واحدة.

Pereglyad هو عرض توضيحي بسيط للبيانات التي يتم حفظها في جداول قاعدة البيانات ، تمامًا مثل الإجراء الذي يتم حفظه بواسطة مجموعة من المشغلين ، والذي يمكن تنشيطه.

قدم المزيد ، بيانات oscillki vodobrazhae من الجدول ، حول كيفية السؤال ، تمامًا مثل إجراء جمع تعليمات SQL.

قم بعكس هذه المقالة: مراجعة الإجراءات التي يتم حفظها. تلك التي تهمس بها

Patrick صحيح عندما تقول ، حسنًا ، تحتاج إلى إلقاء نظرة على طعامك الآخر ، وإنشاء عرض لنفسك في الذاكرة ، وفي النوع البور ، ينضم ، والبيانات ، وحتى إذا تم تقسيم التجميع ، فلا يزال بإمكانك إنهاء حتى يبحث الجوع.

احفظ الإجراء لحفظ كل عملك إما باستخدام استبدالات جدول التجزئة المؤقت ، على سبيل المثال # tmpTable1 ، أو في ذاكرة @ tmpTable1 للمساعدة. Zalezhno v_d لما تريد أن تقوله.

الإجراء الذي يتم اتخاذه مشابه للدالة ، ولكن يتم استدعاؤه بأسماء مباشرة. zamіst funktsіy ، yakі في الواقع vikoristovuyutsya في منتصف الطلب.

من الواضح ، في معظم الأوقات تكون الطاولات في الذاكرة ، لأنك لا تأخذ الكثير من المال.

ماهيش ليس على حق ، إذا سمح بالنبيذ ، لا يمكنك تغيير الجزية من الجزية. أبي ، انظر إلى باتريك

إنشاء عرض vw_user_profile AS حدد A.user_id ، ب. Profile_description من tbl_user A يسارًا ينضم إلى tbl_profile B على A.user_id = b.user_id

يمكنني تحديث البيانات ... مثل بعقب ، يمكنني معرفة ما إذا كانت cich ...

تحديث vw_user_profile اضبط profile_description = "Manager" حيث user_id = 4

تحديث tbl_profile اضبط profile_description = "Manager" حيث user_id = 4

لا يمكنك إدراجه في الإعلان ، نظرًا لعدم وجود جميع الحقول في الجدول بأكمله ، وأفترض أن PROFILE_ID هو المفتاح الأساسي ولا يمكن أن يكون NULL. ومع ذلك ، يمكنك أيضًا إدخال INSERT في vistavu ...

لقد أنشأت تطبيقًا للطاولة الرئيسية ، النائب ...

إنشاء طريقة عرض غير المرغوب فيه مثل عرض التحديد *

أدخل القيم غير المرغوب فيها (الرمز ، الاسم) ("جلين" ، "جلين روبرتس") ، ("ماري" ، "ماريان روبرتس")

احذف من Junk Where ID> 4

І إدراج ، حذف يعمل في نفس النقطة

من الواضح أنه لا يمكنك تغيير ما إذا كانت الحقول صحيحة ، أو ما إذا كانت تجميعات ، أو ما إذا كانت مؤمنة ، أو ما إذا كانت عبارة عن عبارات ، وإذا كانت مجرد بيانات مباشرة ، فيمكن تغييرها.

إذا رأيت أكثر من جدول واحد ، فلا يمكنك إدراجها أو رؤيتها ، ولكن إذا رأيت أكثر من جدول واحد ، يمكنك الصوت.

بالإضافة إلى الإشارة إلى المزيد من التعليقات ، أود أن أضيف بعض الاحترام إلى "آراء".

  1. يمكن أن تكون الهدايا منتصرة لطي prikhovuvannya. اعرض السيناريو الخاص بك ، حيث يعمل 5 أشخاص في المشروع ، وواحد منهم فقط هو بالفعل فريق لديه قاعدة بيانات ، على سبيل المثال ، الارتباطات القابلة للطي. في مثل هذا السيناريو ، يمكن إنشاء الخمور ، والتي يمكن أن يطلبها أعضاء الفريق الآخرون بسهولة ، وتستفسر شظايا الرائحة عن جدول واحد.
  2. يمكن تنفيذ طرق العرض الأمنية بسهولة. دعنا نقول نحن spіvrobіtnikالجداول الراتب , رقم SSN. المواطنون غير مذنبين بالبحث عن coristuvachs ، الذين لا يُسمح لهم بالنظر إليهم. بهذه الطريقة ، يمكننا إنشاء إشعار ، مثل اختيار الأعمدة في الجدول ، مثل عدم التصريح ، مثل im'ya , vіk taإلخ ، دون إبداء ملاحظات متضاربة (على سبيل المثال ، حول الراتب ، وما إلى ذلك ، حول كيف تم تخميننا مسبقًا). الآن يمكننا أن نرى السماح للطلب المباشر للجداول الموظفواحفظه فقط للقراءة من الموضوع. بهذه الطريقة ، يمكننا تحقيق الأمان للحصول على طرق عرض المساعدة.

إجراء الصوت

إنشاء الإجراء [({في | خارج | INOUT} [,…])]
[مجموعة النتائج الديناميكية ]
يبدأ [الذري]

نهاية

الكلمات الدالة
. IN (الإدخال) - معلمة الإدخال
. OUT (الإخراج) - معلمة الإخراج
. INOUT - المدخلات والمخرجات ، وكذلك حقل (بدون معلمات)
. تشير DYNAMIC RESULT SET إلى أن الإجراء يمكنه تحديد عدد المؤشرات ، بحيث يمكن إغلاق الإجراء بعد إرجاع الإجراء.

ملاحظات
لا يوصى بتغيير الكثير من المعلمات في الإجراءات المحفوظة (على سبيل المثال ، أمام أعداد كبيرة وسلاسل أحرف) من خلال إعادة إنشاء المكدس. في الممارسة العملية ، تحافظ اللهجات الأساسية لـ Transact-SQL و PL / SQL و Informix على الاتساق مع المعيار ، كما هو الحال مع المعلمات الصوتية والمختلفة ، والتغييرات الصوتية ، وكذلك بالنسبة لواجهة المستخدم. توصي Microsoft بإيقاف التقريب التالي لتقييم حجم ذاكرة التخزين المؤقت للإجراءات التي تم حفظها:
\ u003d (أقصى عدد ساعات عمل coristuvachiv) * (تجربة أكبر خطة حضور) * 1.25. اعتمادًا على الخطة ، يمكن توسيع الجوانب بمساعدة الأمر: DBCC MEMUSAGE.

إجراءات فيكليك

بالنسبة إلى نظم إدارة قواعد البيانات الغنية ، يتم استخدام قائمة الإجراءات المحفوظة لمساعدة المشغل:

إجراء التنفيذ [(][)]

ملحوظة: يمكن حفظ الإجراءات بسرعة مع البرامج أو الإجراءات الأخرى التي يمكن حفظها أو في الوضع التفاعلي.

مثال على إجراء التصويت

إنشاء إجراء Proc1 AS // صاعق الإجراء
إعلان Cur1200 // صاعقة المؤشر
افتح Cur1 // افتح المؤشر
إحضار التالي من Cur1 // قراءة البيانات من المؤشر
بينماFetch_Status = 0
يبدأ
إحضار التالي من Cur1
نهاية
CLOSE Cur1 // أغلق المؤشر
تحديد Cur1
EXECUTE Proc1 // قم بتشغيل الإجراء

تعدد الأشكال
يمكن إنشاء برنامجين فرعيين يحملان الاسم نفسه في مخطط واحد ونفسه ، حيث توجد معلمات هذين البرنامجين الفرعيين في هذا العالم من نوع واحد ، بحيث يمكن فصلهما. للتمييز بين برنامجين فرعيين لهما نفس الأسماء في مخطط واحد ، يتم إعطاء الجلد اسمًا بديلاً وفريدًا (اسم محدد). يمكن تعيين هذه الإيمية ، إذا تم تطوير برنامج فرعي. عند استدعاء برنامج فرعي لوجود عدد من نفس الأسماء ، يتم احتساب تكلفة البرامج الفرعية المطلوبة لفترة قصيرة من الوقت:
. في كثير من الأحيان ، يتم تعيين جميع الإجراءات من الأسماء المخصصة ، وإذا لم يكن هناك مثل هذا ، فإن جميع الوظائف من أسماء معينة.
. لتحليل أعمق ، تم التخلي عن هذه البرامج الفرعية ، ويمكن منح امتياز لمئات من هؤلاء الدانيين لـ vikonannya (EXECUTE).
. Їх اختر ті ، yakі mayut عدد parametrіv في vіdpodіdaє عدد الوسائط vikliku. تتم مراجعة أنواع البيانات والمعلمات المخصصة لتلك الوظائف.
. في حالة فقدان أكثر من برنامج فرعي واحد ، يتم اختيار البرنامج الذي يحتوي على أقصر مؤهل.
في ممارسة Oracle ، يُسمح بتعدد الأشكال للوظائف التي يتم عرضها فقط في الحزم ، [بريد إلكتروني محمي]- في المخططات الأخرى ، وفي Sybase و MS SQL Server ، يتم حظر التركيز.

فيدالينيا وتغيير الإجراءات
بالنسبة للإجراء البعيد ، يتم استخدام عامل التشغيل:

لتغيير الإجراء ، تم تحديد عامل التشغيل:

تغيير الإجراء [([{في | خارج | INOUT}])]
يبدأ [الذري]

نهاية

امتيازات إجراءات vikonannya

تشغيل المنحة ل |عام [مع خيار المنحة]

إجراءات النظام
قد يكون لنظام DBMS الغني (بما في ذلك SQL Server) نفس مجموعة إجراءات النظام ، لذا يمكنك تعديلها لأغراضك الخاصة.

إجراءات التوفير

يعد موضوع هذا التوزيع من أهم الأدوات التي يتم تقديمها لتجار التجزئة عن طريق إضافات قواعد بيانات InterBase لتنفيذ منطق الأعمال. وتغيير مقدار الكود المطلوب لإعداد المهام من المستحيل عمليا إكمال برنامج قاعدة بيانات دون تغيير الإجراءات المحفوظة.
في حين أن هناك مجموعة واسعة من الإجراءات التي يجب حفظها والتي تعتبر مهمة لمعظم أنظمة DBMS العلائقية ، يمكن أن تلعب إجراءات InterBase دور مجموعات البيانات الكاملة عمليًا ، مما يسمح لها بتدوير النتائج في استعلامات SQL محددة.
Rosobniks ، يدفعون في كثير من الأحيان ، يتعلمون إجراءات soberezhezhe فقط yak nabir من sql-zapitiv محدد ، ياكي shit بجد ، و prazuvati هو ميل من الوقت ، والمستوى العالي الحقيقي.
إذن ما هي الإجراءات المخزنة في InterBase؟
الإجراء المحفوظ (CP) هو جزء من البيانات الوصفية لقاعدة البيانات ، والتي يتم تجميعها من البرنامج الفرعي لتطبيق InterBase الداخلي ، والمكتوب بلغة خاصة ، المترجم الذي يتم إدراجه في قلب خادم InteiBase
يمكن استدعاء حفظ إجراء من برامج العميل ، من المشغلات والإجراءات الأخرى التي تم حفظها. يتم حفظ الإجراء في منتصف عملية الخادم ويمكنك معالجة البيانات الموجودة في قاعدة البيانات ، وكذلك تشغيل العميل حول كيفية النقر فوق (تلك المشغلات ، HP ، الملحق) نتائج فوزك
أساس الاحتمالات الصعبة التي وضعتها HP هو البرمجة اللغوية الإجرائية ، والتي يمكن إجراؤها في المستودع الخاص بها ، مثل تعديل مقترحات SQL الرائعة ، مثل INSERT و UPDATE و SELECT ، فضلاً عن تنظيم التحليل والدورات (IF ، WHILE) ، بالإضافة إلى المواقف الخاطئة ، تسمح إجراءات Mova المحفوظة بتنفيذ خوارزميات قابلة للطي للعمل مع البيانات ، والتركيز على العمل مع البيانات العلائقية لـ HP يكون أكثر إحكاما بشكل ملحوظ للإجراءات المماثلة مع اللغة التقليدية.
وتجدر الإشارة إلى أن الزناد هو المنتصر بنفس البرمجة ، والجريمة منخفضة في الميزات والحدود. Vіdmіnnostі pіdmіnnostі pіdnіzhini movi ، scho vikoristovuєєtsya in trigery ، ورد أن vіd mivi KHP تمت مراجعته في قسم "Trigeri" (الجزء 1).

مثال على إجراء بسيط تم حفظه

لقد حان الوقت لإنشاء الإجراء الأول ، والذي يتم حفظه ، وفي النهاية ، عملية إنشاء إجراءات الحفظ. البيرة لبداية القادم ليقول بضع كلمات عن هؤلاء ، وكيفية التدرب على الإجراءات التي تم حفظها. توصي وثائق InterBase بإنشاء إجراءات لملفات إضافية في سكربتات SQL ، والتي ستعمل على تنظيف نص CP ، حيث يتم تقديمها إلى مدخلات مترجم isql ، وبهذه الطريقة ، يتم إنشاء هذا التعديل في CP ، كما في SQL هذا البرنامج النصي في مرحلة تجميع BLR في نص إجراء BLR (حول نص إجراء BLR ، انظر Rozdіl "بنية قواعد البيانات InterBase" (الجزء 4)) winkle pardon ، ثم isql سيُظهر لك عن هؤلاء ، على أي صف من SQL النصي ملف winkla tsya العفو. صحح العفو وكرر كل شيء من الخلف إلى الوراء. حول nagodzhennya في الفهم اليومي للكلمة ، أي حول trasuvannya vykonannya ، مع إمكانية الإعجاب بالمعاني المتغيرة للتغيير ، لا يمكنك الخروج عن طريقك. من الواضح أن مثل هذا pidhid لا يتناسب مع الزيادة في خصوصية الإجراءات المحفوظة في أعين بائع التجزئة.
البروتين ، كريم النهج المعياري البسيط لتطوير HP<_\ществ\ют также инструменты сторонних разработчиков, которые делают работу с хранимыми процедурами весьма удобной Большинство универсальных продуктов для работы с InterBase, перечисленных в приложении "Инструменты администратора и разработчика InterBase", предоставляют удобный инструментарий для работы с ХП. Мы рекомендуем обязательно воспользоваться одним из этих инструментов для работы с хранимыми процедурами и изложение материала будем вести в предположении, что у вас имеется удобный GUI-инструмент, избавляющий от написания традиционных SQL-скриптов
يتم وصف بناء جملة الإجراءات المحفوظة في الخطوة التالية:

إنشاء اسم الإجراء
[(نوع بيانات بارام [، نوع بيانات بارام ...])]
)]
مثل
;
< procedure_body> = []
< block>
< vanable_declaration_list> =
إعلان متغير نوع بيانات var ؛

=
يبدأ
< compound_statement>
[< compound_statement> ...]
نهاية
< compound_statement> = (بيان؛)

يبدو أنها كبيرة الحجم ويمكن أن تكون مرهقة ، ولكن كل شيء في الحقيقة أبسط.
مرة أخرى ، محور المؤخرة هو إجراء بسيط يتم اتخاذه ، حيث يأخذ رقمين كمدخلات ، ويجمعهما ويقلب النتيجة:

إنشاء إجراء SP_Add (أول_ دقة مضاعفة ،
second_arg دقة مزدوجة)
العوائد (نتيجة الدقة المزدوجة)
مثل
يبدأ
النتيجة = first_arg + second_arg ؛
تعليق؛
نهاية

حسنًا ، كل شيء بسيط: بعد الأمر CREATE PROCEDURE ، يتم تحديد اسم الإجراء الذي تم إنشاؤه حديثًا (والذي قد يكون فريدًا عند حدود قاعدة البيانات) - لإسقاط SP_Add ، ثم للأذرع ، والتي من خلالها يتم تحديد معلمات الإدخال الخاصة بـ يتم إعادة تعيين نوع HP - أول_أولى وثاني_arg - من القيم المخصصة.
قائمة معلمات الإدخال في الجزء غير المتعلق باللغة من عبارة CREATE PROCEDURE - يتم اجتياز التخطيات ، إذا تم أخذ جميع البيانات الخاصة بإجراء العمل الخاص بها لإدخال إضافي إلى الجدول في منتصف نص الإجراء.

في الإجراءات التي تم حفظها ، هناك أنواع البيانات العددية InteiBase

أعط الكلمة الرئيسية RETURNS ، وبعد ذلك يتم إعادة ترتيب المعلمات في الذراعين ، والتي يتم تدويرها وفقًا للأنواع المعينة - في هذه الفئة واحدة فقط - النتيجة.
كيف أن الإجراء غير مذنب بتناوب المعلمات ، وكلمة RETURNS وقائمة المعلمات التي سيتم تدويرها ، يوميًا.
بعد تحديد الكلمة الأساسية RETURNSQ AS. قبل الكلمة الأساسية العنوان،وبعد واحدة جديدة - تكنوإجراءات.
نص الإجراء ، المأخوذ ، هو نسخة من أوصاف التغييرات الداخلية (المحلية) (مثل الرائحة الكريهة ، سننظر إليها أدناه) ، والتي تم تقسيمها بنقطة بعد غيبوبة (؛) ، وكتلة من المشغلين ، الأماكن في قوس المشغل BEGIN END. في هذه الحالة ، يكون جسم HP أبسط - نطلب منك إضافة وسيطتي إدخال وإرفاق النتيجة بالمخرجات ، ثم استدعاء الأمر SUSPEND. من الواضح أن جوهر أمر الاختلاف Trohi pіznіshe roz ، ولكن في الوقت الحالي من المهم أنه من الضروري نقل المعلمات التي تتحول إلى هناك ، فقد أنقذت نجوم bula viklikan الإجراء.

الاختلافات في الإجراءات التي تم حفظها

احترم أن العامل الذي في منتصف الإجراء سينتهي بنقطة بغيبوبة (؛). على ما يبدو ، فإن النقطة التي يخرج بها موزع أوامر SQL القياسي هي إشارة إلى مترجم SQL بأن نص أمر المقدمة صحيح ويحتاج إلى معالجته. تشي لا يرى ذلك ، scho ، يظهر بقعة مع غيبوبة في منتصف HP ، يتعرف مترجم SQL على أن الأمر قد تم إدخاله بالضبط ويحاول إجراء جزء من الإجراء ، فما الذي تم اتخاذه؟ Tse pripuschennya ليس بالمعنى الدقيق للكلمة. على سبيل المثال ، إذا قمت بإنشاء ملف ، وفي هذه الحالة يمكنك كتابة إرشادات ، وإضافة أمر للبدء من قاعدة البيانات وتجربة برنامج SQL النصي بمساعدة مترجم isql ، فسيتم تشغيل العفو ، وسيظهر أن تكون غير مناسبة ، في فكر المترجم الشفهي ، في نهاية الأمر ، إنشاء الإجراءات التي يتم اتخاذها. من أجل حفظ إجراءات ملفات نصية SQL إضافية ، دون استخدام أدوات متخصصة في InterBase roamer ، من الضروري قبل أمر الجلد إنشاء HP (نفس الشيء ينطبق على المشغلات) إلهام اليوغا. يبدو الأمر isql ، الذي يغير مقسم اقتراح SQL ، كما يلي:

اضبط المدة

للحصول على طريقة نموذجية لإنشاء إجراء ما ، فإن ما يتم الاعتناء به يبدو كالتالي:

تعيين المدة ^ ؛
إنشاء إجراء some_procedure
... . .
نهاية
^
اضبط المدة ؛ ^

إجراءات التوفير الأسبوعية

دعنا ننتقل إلى إجراءاتنا ، ما الذي يجب الاهتمام به. الآن ، إذا تم إنشاؤه ، فمن الضروري الاتصال ، وتمرير المعلمات وأخذ النتائج التي يتم تدويرها. من الأسهل القيام بذلك - يكفي كتابة استعلام SQL للحصول على مظهر مسيء:

تحديد *
من Sp_add (181.35 ، 23.09)

يطلب منا Tsei تحويل صف واحد إلينا ، والذي سيأخذ حقل نتيجة واحد فقط ، حيث سيتم تغيير مجموع العددين 181.35 و 23.09 ، ثم 204.44.
بهذه الطريقة ، يمكن اختراق إجراءاتنا في استعلامات SQL الخاصة ، والتي يتم اختراقها كما هو الحال في برامج العميل ، وكذلك في HP أو المشغلات الأخرى. أصبح هذا الاختلاف في إجراءنا ممكنًا عن طريق إضافة الأمر SUSPEND إلى نهاية الإجراء الذي سيتم اتخاذه.
على اليمين ، في InterBase (وفي جميع نسخه) هناك نوعان من الإجراءات المحفوظة: الإجراءات القابلة للتحديد والإجراءات القابلة للتنفيذ. ترتبط حقيقة أن الروبوتات لديها نوعين من HP بحقيقة أن إجراءات التحديد تبدو لتدوير مجموعة غير شخصية من معلمات الإدخال مجمعة في صف واحد ، كما لو كان بإمكانهم إلقاء نظرة على مجموعة من البيانات ، وإما أن إجراءات viconation لا يمكن تدويرها المعلمات ، أو يمكنهم تدويرها بمفردها في المرتجعات ، دي صف واحد من المعلمات. يتم استدعاء الإجراءات المحددة بجوار استعلامات SELECT ، وتتبع الإجراءات التي يتم استدعاؤها مساعدة الأمر EXECUTE PROCEDURE.
بعد الإساءة إلى رؤية الإجراءات التي تم حفظها ، نفس بناء جملة الإنشاء ولا تتحدى أي شيء رسميًا ، ثم ما إذا كان يمكن استخدام الإجراء في استعلام SELECT وما إذا كان تحديد الإجراء هو لمساعدة EXECUTE PROCEDURE. التغذية هي كيف يتصرف الشلل الدماغي مع أنواع مختلفة من الشر. بمعنى آخر ، يختلف الاختلاف في تصميم الإجراء لنوع الغناء الأسبوعي. لذلك يتم إنشاء إجراء التحديد خصيصًا لاستعلام الاستعلام SELECT ، ويتم إنشاء الإجراء المحدد خصيصًا لاستعلام الاستعلام EXECUTE PROCEDURE. دعنا نلقي نظرة على الصلاحيات التي يتم أخذها في الاعتبار عند تصميم هذين النوعين من HP.
لفهم كيفية ممارسة اهتزاز الإجراء ، للحصول على القليل من النظرية. دعنا نحصل على استعلام SQL بسيط مثل معرف التحديد ، NAME FROM Table_example. نتيجة لذلك ، نأخذ في الاعتبار جدول الإخراج ، والذي يتكون من عمودين (ID و NAME) ونفس عدد الصفوف (عدد الصفوف المتساوي في الجدول Table_example). تم تحويل الجدول إلى نتائج هذا الاستعلام ، ويطلق عليه أيضًا مجموعة بيانات SQL. . ثم يقوم الخادم بقراءة السجل الجلدي ، والذي يقوم بإرسال نتائج الطلب ، وتحديد الحقول المطلوبة منه (في حالة المعرف والاسم) وإرسال الرسالة إلى العميل. دعنا نكرر العملية مرة أخرى - وهكذا بالنسبة لسجل اهتزاز الجلد.
جميع الخطوات ضرورية للقارئ الذكي لفهم أن جميع مجموعات بيانات SQL تتشكل على التوالي ، بما في ذلك الإجراءات التي يتم حفظها! vіdminnіst الرئيسي لإجراءات اختيار الإجراءات ، والتي تستند إلى حقيقة أن الإجراءات الأولى مصممة لتقليب الصفوف المجهولة الهوية ، وغيرها - فقط لواحد. هذا هو السبب في أن الرائحة الكريهة zastosovyatsya بطريقة مختلفة: يستدعي اختيار الإجراء مساعدة أمر SELECT ، مثل "wimage" في الإجراء للتحقق من جميع السجلات ، حتى تتمكن من قلبها. يتم استدعاء الإجراء ، الذي يسمى ، لمساعدة إجراء التنفيذ ، مثل "wiymaє" من HP صف واحد فقط ، و reshta (navit yakshcho stink!) تجاهل.
دعنا نلقي نظرة على مثال إجراء الاختيار ، بحيث يصبح أكثر وضوحًا. من أجل> التسامح ، دعنا نحفظ الإجراء ، yak pratsyuє لذلك هو نفسه ، yak zap SELECT ID ، NAME FROM Table_Example ، لذلك لن تتمكن من تحديد الحقول ID і NAME z usієї table. محور tsey بعقب:

إنشاء إجراء Simple_Select_SP
عائدات (
عدد صحيح procID ،
procNAME VARCHAR (80))
مثل
يبدأ
ل
حدد المعرف ، الاسم من table_example
INTO: procID ،: procNAME
فعل
يبدأ
تعليق؛
نهاية
نهاية

دعنا نلقي نظرة على الإجراء المسمى Simple_Select_SP. في واقع الأمر ، لا توجد معلمات إدخال ومعلمات إخراج - ID و NAME. Naytsіkavіshe ، zvichayno ، polaga في إجراء tіlі. هنا هو بناء FOR SELECT:

ل
حدد المعرف ، الاسم من table_example
INTO: procID ،: procNAME
فعل
يبدأ

/ * نحتاج إلى تغيير procID و procName * /

نهاية

يعني رمز shmachok هذا الهجوم: لصف الجلد ، المحدد من جدول Table_example ، حدد قيمة التغيير procID و procName ، ثم أضف قيمة التغيير.
يمكنك تحديد المظهر وطلب: "التغيير؟ وإلا كيف التغيير 9" إذا كان الأمر مشابهًا لمفاجأة الاختلاف - أولئك الذين هم في الإجراءات التي تم حفظها ، يمكننا الفوز بالتغيير. بلغة HP ، يمكنك التعبير عنها كتغيير محلي في منتصف الإجراء ، والتغلب على معلمات الإدخال والإخراج كما تم تغييرها.
للتعبير عن التغيير المحلي في الإجراء الذي يتم حفظه ، من الضروري تضمين وصف بعد الكلمة الأساسية AS وقبل الكلمة الأولى BEGIN. يبدو وصف التغيير المحلي كما يلي:

إعلان متغير ;

على سبيل المثال ، للإعلان عن طول التغيير المحلي Mylnt ، من الضروري الإدراج بين الوصف الهجومي AS و BEGIN

إعلان متغير MyInt INTEGER ؛

التغييرات في مؤخرتنا مصنوعة من قطعتين. والسبب هو أنه من الضروري تغييرها في منتصف أمر SQL FOR SELECT ، لفصل الحقول في الجداول التي تم تحديدها في SELECT ، ولتغييرها ، من الضروري نقل بقية الزوجي. حتى إذا قمت بالتغيير ، يمكنك تسمية نفس الاسم ، مثل الحقول الموجودة في الجداول!
Ale dvokrapka أمام اسم التغيير ضروري للفوز فقط في منتصف استعلامات SQL. قف مع نصوص الوحش للقتال حتى الموت بدون dvokrapka ، على سبيل المثال:

procName = "اسم ما" ؛

دعنا ننتقل إلى جسم إجراءنا. يقوم الاقتراح FOR SELECT بتدوير البيانات عبر الجداول المرئية - مجموعة من البيانات ، وصف واحد في كل مرة. يمكن وضع حقل الجلد الذي تم تدويره في التغيير الخاص به: ID => procID ، NAME => procName. في جزء من DO والتغييرات يُطلب من العميل ، الذي دعا الإجراء> p> ، للحصول على مساعدة الأمر SUSPEND
بهذه الطريقة ، ينظم الأمر FOR SELECT ... DO حلقة من السجلات التي تم تحديدها في جزء SELECT من الأمر. في نفس الدورة ، والتي تعد جزءًا من DO ، يتم إتمام نقل السجل الذي تمت صياغته إلى العميل بعد إتمام أمر SUSPEND الإضافي.
أيضًا ، يتم التعرف على تحديد الإجراء لتدوير صف واحد أو أكثر ، حيث يتم تنظيم دورة في منتصف جسم HP ، مما يؤدي إلى استعادة تغييرات المعلمة الناتجة. على سبيل المثال ، يجب استخدام الأمر SUSPEND للدورة الأخيرة من الدورة ، كما لو كان يتم تحويل صف البيانات إلى العميل.

الدورات والمشغلين

Crim FOR SELECT ... DO command ، الذي ينظم دورة من سجلات أي خيار ، نوع آخر من الدورات - WHILE ... DO ، والذي يسمح لك بتنظيم دورة على أساس إعادة التحقق من أي عقول. محور الأسهم HP ، دورة scho vikoristovu بينما. فعل. يقوم هذا الإجراء بتدوير مربعات الأعداد الصحيحة من 0 إلى 99:

إنشاء PROCEDJRE QUAD
العوائد (رباعي صحيح)
مثل
أعلن متغيرًا صحيحًا ؛
يبدأ
أنا = 1 ؛
عندما أنا<100) DO
يبدأ
QUADRAT = أنا * أنا ؛
أنا = أنا + 1 ؛
تعليق؛
نهاية
نهاية

كنتيجة لاستعلام SELECT FROM QUAD ، نحتاج إلى جدول لاستبدال صف واحد من QUADRAT ، والذي سيحتوي على مربعات من الأعداد الصحيحة من 1 إلى 99
لتعداد نتائج اهتزاز SQL والدورة الكلاسيكية ، في إجراءات النقل التي تم حفظها ، يتم تحديد عامل IF ... ثم ... ELSE ، والذي يسمح لك بتنظيم الترسيم في المغالطة في النسخ الاحتياطي في المستقبل ، سواء كانت الصيغة مشابهة لغالبية عوامل فك الضغط في برمجة الحركات ذات المستوى العالي ، على مربع باسكال و Cі.
دعونا نلقي نظرة على المثال القابل للطي للإجراء الذي يتم حفظه ، وذلك لسرقة قدميه.

  1. احسب متوسط ​​السعر في الجدول Table_example (div. "Tables Primary Keys and Generators")
  2. دالي للجلد يسجل في الجدول ليبدأ اعادة التدقيق حيث ان السعر الاساسي (PRICE) اعلى من متوسط ​​السعر ثم اضبط السعر مساويا لقيمة متوسط ​​السعر اضافة الى ضبط تثبيت الماء
  3. إذا كان السعر أقل أو أكثر من متوسط ​​السعر ، فسأحدد السعر المساوي للسعر الإجمالي ، بالإضافة إلى نصف سعر التجزئة بين متوسط ​​السعر.
  4. قم بتدوير جميع تغييرات الصف في الجدول.

بالنسبة إلى cob ، يكون اسم HP مهمًا ، بالإضافة إلى معلمات الإدخال والإخراج. يتم كتابة كل شيء في رأس الإجراء ، والذي يتم حفظه

إنشاء إجراء زيادة الأسعار (
Percent2 زيادة الدقة المزدوجة)
RETURNS (ID INTEGER، NAME VARCHAR (SO)، new_price ضعف
الدقة AS

سيطلق على الإجراء اسم "زيادة الأسعار" ، ويحتوي على معلمة إدخال واحدة Peiceni21nciease ، والتي قد تكون من النوع DOUBLE PRECISION ، و 3 معلمات إدخال - ID و NAME و new_pnce. يرجى ملاحظة أن أول معلمتين قد يكون لهما نفس الأسماء ، مثل الحقول الموجودة في جدول Table_example ، والذي نختار التحليل بهما. يسمح Tse بقواعد إجراءات mov المحفوظة.
الآن من الخطأ التعبير عن التغيير المحلي ، بحيث تكون منتصرًا من أجل حفظ متوسط ​​القيمة. سيبدو صوتك كما يلي:

إعلان متغير avg_price ضعف الدقة ؛

الآن دعنا ننتقل إلى جسم الإجراء ، الذي يتم الاعتناء به الكلمة الرئيسية تبدأ.
نحتاج إلى حساب المرة الأولى للخوارزمية الخاصة بنا - احسب متوسط ​​السعر. لمن نسارع بطلب من هذا النوع:

حدد AVG (السعر_ل)
من Table_Example
إلى الداخل: متوسط ​​السعر ، -

سيؤدي ذلك إلى تغذية دالة التجميع المتغيرة AVG ، بحيث تقوم بتدوير متوسط ​​قيمة الحقل PRICE_1 لمتوسط ​​الصفوف المحددة - في حالتنا ، متوسط ​​قيمة PRICE_1 لجميع الجداول Table_example. يتم وضع القيمة التي يتم تدويرها بواسطة الطلب في تغيير متوسط ​​السعر. لاستعادة الاحترام ، الذي تم تغييره avg_pnce أمام رفرف مزدوج ، من أجل إحياء المياه المنتصرة في الطلب.
خصوصية هذا الطلب هي أولئك الذين يقومون دائمًا بالتحقق بدقة من إدخال واحد. تسمى هذه الطلبات الطلبات الفردية ويمكن اختيار هذه الاختيارات فقط في الإجراءات المحفوظة. إذا كنت ترغب في تدوير أكثر من صف واحد ، فمن الضروري وضع هيكل FOR SELECT ... DO من أجل تنظيم دورة لمعالجة صف الجلد الذي يتم تدويره.
Otzhe ، حصلنا على متوسط ​​قيمة السعر. الآن من الضروري مراجعة جميع الجداول ، لمقارنة قيمة السعر في سجل الجلد بمتوسط ​​السعر والعيش في
على قطعة خبز نقوم بتنظيم فرز سجل الجلد من الجدول Table_example

ل
حدد معرّف ، NAME ، PRICE_1
من Table_Example
INTO: المعرف ،: NAME ،: new_price
فعل
يبدأ
/ * _ هنا نفتح سجل الجلد * /
نهاية

عندما يكون التصميم مختلفًا عن جدول Table_example ، سيتم منح البيانات وقيم الري في صف الجلد معرفًا متغيرًا ، NAME و new_pnce. من الواضح أنك تتذكر أن البيانات المحددة سيتم تدويرها نتيجة لذلك ، وليس varto: حقيقة أن معلمات الإخراج قد تم تعيينها لا تعني أن العميل يرفض قيمة qi لعميل HP! يكون نقل المعلمات ممكنًا فقط عندما يتم تعطيل الأمر SUSPEND ، وقبل ذلك يمكننا تغيير المعلمات الافتراضية كالتغيير الأساسي - في تطبيقنا ، نعمل أيضًا مع المعلمة new_price.
أيضًا ، في منتصف جسم BEGIN .. END الدورة ، يمكننا تعديل قيمة صف الجلد. كما تتذكر ، من الضروري أن نعرف ، كثمن أساسي ، أن نرتفع عن المتوسط ​​، ونعيش في الأيام الخوالي. يتم تنفيذ إجراء Qiu لمطابقة mi بمساعدة مشغل IF:

إذا (new_price> avg_price) ثم / * يكون السعر الحالي أعلى بالنسبة لمتوسط ​​السعر * /
يبدأ
/ * ثم حدد سعرًا جديدًا مساويًا لقيمة متوسط ​​السعر بالإضافة إلى تحديد المئات * /
new_price = (avg_price + avg_price * (Percent2Increase / 100)) ؛
تحديث Table_example
ضبط PRICE_1 =: new_price
أين المعرف =: المعرف ؛
نهاية
آخر
يبدأ
/ * إذا كان السعر الفعلي أقل أو أكثر من متوسط ​​السعر ، فسنقوم بتعيين السعر المساوي للسعر الإجمالي ، بالإضافة إلى نصف سعر التجزئة بين متوسط ​​السعر هذا * /
new_price = (new_pnce + ((avg_pnce new_price) / 2)) ؛
تحديث Table_example
ضبط PRICE_1 =: new_price
حيث المعرف = .ID ؛
نهاية

مثل bachite ، كان من الرائع إكمال بناء IF الرائع ، من المهم مناقشته ، لذلك لا تعلق ، مثل الكتابة في الرمز / ** /.
من أجل تغيير السعر بنفس الطريقة إلى سعر التجزئة المحسوب ، نقوم بتسريع عامل التشغيل UPDATE ، والذي يسمح لك بتعديل السجلات الفعلية - واحدة أو أكثر. للإشارة بشكل لا لبس فيه إلى السجل الذي تحتاج إلى تغيير السعر فيه ، فسنربح لفهم حقل WHERE للمفتاح الأساسي ، والذي يساوي قيمة التغيير ، حيث يتم أخذ قيمة المعرف لسجل الدفق: ID =: بطاقة تعريف. انتبه إلى أنه تم تغيير الهوية أمام الزوجي.
بعد تغيير IF ... ثم ... ELSE ، يكون لدى المعرف الذي تم تغييره و NAME و new_price بيانات ، حيث تقع على عاتقنا مسؤولية تحويل العميل إلى استدعاء الإجراء. إذا كان من الضروري إدخال أمر SUSPEND التالي ، بحيث يتم إرسال البيانات هناك ، تسمى النجوم HP. حدد ... لا تتكرر على جميع السجلات في طلبك.
من الضروري تحديد استخدام الأمر SUSPEND ، بحيث يتم حفظ الإجراء المراد حفظه فقط ، ويتم استخدام الأمر EXIT ، بحيث يتم حفظ الإجراء بعد نقل الصف. ومع ذلك ، نادرًا ما يحتاج الأمر EXIT إلى الإكمال ، فالرقائق مطلوبة بشكل أساسي من أجل مقاطعة الدورة في متناول العقل.
في حالة الرجوع إلى الحالة السابقة ، إذا تم استدعاء الإجراء بواسطة عبارة SELECT وتم إكماله باستخدام EXIT ، فلن يتم تدوير الصف المتبقي. Tobto ، إذا كنت بحاجة إلى مقاطعة الإجراء وما زلت تأخذ الصف ، فأنت بحاجة إلى تسريع التسلسل

تعليق؛
خروج؛

السمة الرئيسية للخروج هي اختيار مجموعات مفردة من البيانات ، والتي يتم تدويرها في الاختصار من خلال إجراء التنفيذ. في هذه الحالة ، يتم تعيين قيم المعلمات الخارجية ، ولكن لم يتم تشكيل مجموعة بيانات SQL ، وينتهي الإجراء.
دعنا نكتب نص إجراءاتنا مرة أخرى ، حتى تتمكن الأم من فهم هذا المنطق بلمحة:

إنشاء إجراء زيادة الأسعار (
Percent2 زيادة الدقة المزدوجة)
العوائد (رقم التعريف الصحيح ، الاسم فاركار (80) ،
new_price ضعف الدقة) AS
إعلان متغير avg_price ضعف الدقة ؛
يبدأ
حدد AVG (السعر_ل)
من Table_Example
INTO: متوسط ​​السعر ؛
ل
حدد معرّف ، NAME ، PRICE_1
من Table_Example
INTO: المعرف ،: NAME ،: new_price
فعل
يبدأ
/ * هنا نقوم بمعالجة السجل الجلدي * /
إذا (new_pnce> avg_price) ثم / * يكون السعر الحالي أعلى بالنسبة لمتوسط ​​السعر * /
يبدأ
/ * ضع سعرًا جديدًا مساويًا لمتوسط ​​السعر بالإضافة إلى تحديد المئات * /
new_price = (avg_price + avg_price * (Percent2Increase / 100)) ؛
تحديث Table_example
ضبط PRICE_1 =: new_price
أين المعرف =: المعرف ؛
نهاية
آخر
يبدأ
/ * إذا كان السعر الفعلي أقل أو أكثر من متوسط ​​السعر ، فعندئذ أقوم بتعيين السعر المساوي للسعر الإجمالي ، بالإضافة إلى نصف سعر التجزئة بين المبلغ ومتوسط ​​السعر * /
new_price = (new_price + ((avg_price - new_price) / 2)) ؛
تحديث Table_example
ضبط PRICE_1 =: new_price
أين المعرف =: المعرف ؛
نهاية
تعليق؛
نهاية
نهاية

مثال دانمركي للإجراء المحفوظ ، يوضح تطور التركيبات الرئيسية لإجراءات ومشغلات حفظ الأفلام. دعونا نلقي نظرة على طرق إصلاح الإجراءات المحفوظة لإنجاز بعض المهام التي غالبًا ما يتم إلقاء اللوم عليها.

الإجراءات العودية المحفوظة

يمكن أن تكون إجراءات InterBase التي تم حفظها متكررة. تسي يعني أن الإجراءات التي تم حفظها ، يمكنك الاتصال بنفسك. يُسمح بما يصل إلى 1000 إجراء متساوٍ ، والتي يتم حفظها ، ومع ذلك ، يجب أن تتذكر أن الموارد المتاحة على الخادم قد تنفد في وقت مبكر ، وسيتم الوصول إلى الحد الأقصى لاستثمار HP.
تعد معالجة الهياكل الشبيهة بالشجرة التي يتم حفظها في قاعدة البيانات واحدة من أوسع نطاق من الإجراءات التي يتم حفظها. غالبًا ما يتم تقليب الأشجار في إدارة المستودعات والمستودعات والموظفين والإضافات الواسعة الأخرى.
دعنا نلقي نظرة على مثال الإجراء الذي تم اتخاذه ، وكيفية اختيار جميع السلع من نفس النوع ، بدءًا من الاستثمار الأول المتساوي.
اسمحوا لي أن أتطرق إلى بيان المهمة: هل يمكنني إحضار سلع بهيكل هرمي من هذا النوع:

بضائع
- تقنية بوبوتوف
- ثلاجات
- ثلاث غرف
- غرفتين
- غرفة واحدة
- ماكينات التنظيف
- رَأسِيّ
- أمامي
- كلاسيكي
- فوزكي
- تكنولوجيا الكمبيوتر
....

هيكل Tsya dovіdnika categorіy varіv_v قد الأم g_lki raznoї glibini. وتتراكم أيضًا بمرور الوقت. مهمتنا هي توفير مجموعة مختارة من جميع عناصر نهاية اليوم من "تلاوة الاسم الشائع" ، بدءًا من أي فوزلا. على سبيل المثال ، إذا اخترنا "سيارات Palny" ، فسنحتاج إلى مراعاة الفئات التالية:

ماكينات التحديق - عمودي
سيارات أمامية - أمامية كلاسيكية
سيارات أمامية - سيارات أمامية أعلى

هيكل الجداول مهم لجمع المعلومات حول تقدم البضائع. لقد قمت بتبسيط مخطط تنظيم شجرة في جدول واحد:

إنشاء شجرة السلع الجدول
(ID_GOOD INTEGER ليس فارغًا ،
ID_PARENT_GOOD INTEGER ،
GOOD_NAME VARCHAR (80) ،
قيد المفتاح الأساسي pkGooci (ID_GOOD)) ؛

نقوم بإنشاء جدول GoodsTree واحد ، حيث يوجد 3 حقول فقط: ID_GOOD - معرف فئة معقول ، ID_PARENT_GOOD - معرف للفئة المحددة و GOOD_NAME - اسم الفئة. لضمان سلامة البيانات لهذا الجدول ، قمنا بوضعه على الطاولة لتبادل مفتاح الاتصال:

تبديل البضائع الجدولشجرة
أضف القيد FK_goodstree
مفتاح خارجي (ID_PARENT_GOOD)
المراجع GOODSTPEE (ID_GOOD)

الجدول ذاتي الدعم ويجب اتباع نفس المفتاح القديم. schob at the table buv posilan على الآباء المجهولين ، і navіt reshkodzhaє حاول رؤية فئة البضائع ، yakі mayut nashchadki.
دعنا نطرحه على جدول البيانات القادمة لدينا:

ID_GOOD

1
2
3
4
5
6
7
8
9
10
11
12

ID_PARENT_GOOD

0
1
1
2
2
4
4
4
5
5
10
10

اسم جيد

بضائع
تقنية بوبوتوف
أجهزة الكمبيوتر وملحقاتها
ثلاجات
ماكينات التنظيف
تريشامبر
غرفتين
غرفة واحدة
رَأسِيّ
أمامي
فوزكي
كلاسيكي

الآن ، إذا كان لدينا مكان لجمع البيانات ، فيمكننا المضي قدمًا في إنشاء إجراء حفظ ، والذي سيشهد إزالة جميع فئات السلع "المتبقية" من الفئة "المطلقة" - على سبيل المثال ، للفئة "ثلاثة -حجرة "خارج الفئة ستبدو مثل" ثلاجات Pobutov tehnіka Trikamernі ".
لقد طورت الإجراءات التي تهتم بالبنى الشبيهة بالأشجار مصطلحاتها الخاصة. يسمى عنصر الجلد في الشجرة بالعقدة ؛ والبلوز بين العقدة ، المتجمعة واحدًا لواحد ، تسمى أحذية الرجل العجوز. تسمى Vuzli ، التي تقع في نهاية الشجرة ولا تصنع Naschadkiv ، "أوراق".
لكل إجراء يتم حفظه ، ستكون معلمة الإدخال هي معرف الفئة ، لسبب ما سنبدأ في الفرز. يتم حفظ إجراء matime على النحو التالي:

إنشاء إجراء GETFULLNAME (ID_GOOD2SHOW INTEGER)
العوائد (FULL_GOODS_NAME VARCHAR (1000) ،
ID_CHILD_GOOD INTEGER)
مثل
DECLARE VARIABLE CURR_CHILD_NAME VARCHAR (80) ،
يبدأ
/ * 0rgan_zuєmo zovnіshnіy دورة لـ SELECT لملصقات منتجات bezporednіmi مع ID_GOOD = ID_GOOD2SHOW * /
لـ SELECT gtl.id_good، gtl.good_name
من GoodsTree gtl
أين gtl.id_parent_good =: ID_good2show
INTO: ID_CHILD_GOOD،: full_goods_name
فعل
يبدأ
/ "التحقق من وجود وظيفة EXISTS إضافية ، لذا أدر TRUE ، كما لو كان الأمر سيستغرق صفًا واحدًا عند منعطف الذراعين. إذا كانت العقدة التي تم العثور عليها ID_PARENT_GOOD = ID_CHILD_GOOD لا تحتوي على اختصارات ، فهي" ورقة "من الشجرة ويتم استهلاكها نتيجة */
إذا (ليس خارجًا (
حدد * من GoodsTree
أين GoodsTree.id_parent_good =: id_child_good))
من ثم
يبدأ
/ * مرر قوس الشجرة إلى النتيجة * /
تعليق؛
نهاية
آخر
/ * للعقد ، مثل عمل الأربطة * /
يبدأ
//
CURR_CHILD_NAME = full_goods_name ؛
/ * تشغيل الإجراء الخاص بي بشكل متكرر * /
ل
حدد ID_CHILD_GOOD ، full_goods_name
من GETFULLNAME (: ID_CHILD_GOOD)
INTO: ID_CHILD_GOOD،: full_goods_name
ابدأ
/ * dodaєmo من أجل vuzla-daddy إلى الشخص المعروف. * /
full_goods_name = CURR_CHILD_NAME | "" | و ull_goods_name ، -
تعليق؛ / * تسليم البضائع * /
نهاية
نهاية
نهاية
نهاية

إذا استخدمنا هذا الإجراء مع ID_GOOD2SHOW = معلمة إدخال واحدة ، فسنأخذ ما يلي:

تمامًا مثل bachite ، للمساعدة في إجراء تكراري يتم حفظه ، مررنا بشجرة الفئات بأكملها وأخرجنا أسماء الفئات - "الأوراق" ، كما لو كانت على أطراف الإبر نفسها.

فيسنوفوك

في هذه المرحلة ، نختتم مراجعة الاحتمالات الرئيسية لإجراءاتي التي تم حفظها. من الواضح ، من أجل إتقان تقسيم الإجراءات التي يتم حفظها عند قراءة قسم واحد أمر مستحيل ، حاولنا الكشف عن المفاهيم الأساسية المتعلقة بإجراءات التوفير وشرحها. يمكن العثور على أوصاف تصميم وتصميم HP في معظم قواعد البيانات
سيتم الكشف عن جزء من الطعام المهم ، المرتبط بتكلفة الإجراءات التي يتم توفيرها ، في القسم القادم - "توسيع إمكانية حفظ إجراءات InterBase" ، حيث يرتبط باللوم العام ، vir_ishennu لحالات العفو في الإجراءات التي يتم حفظها والروبوتات.

في مقدمة هذه الدورة ، نظر العالم في كيفية استخلاص البيانات من الجدول وتعديل هيكلها وإنشاء قواعد البيانات والكائنات المخفية فيها وتعديلها ورؤيتها. في هذه المقالة ، سنتحدث أكثر عن الكائنات التي تعتبر نموذجية لخادم DBMS: الإشعارات والمشغلات والإجراءات التي يتم حفظها.

في المقالة الأولى من هذه الدورة ، المنشورة في العدد 3'2000 من مجلتنا ، أشرنا إلى أن معظم نظام إدارة قواعد البيانات (DBMS) للخادم الحالي يدعم الإشعارات والمُشغلات والإجراءات التي يتم حفظها. يتم دعم المظاهر أيضًا بواسطة bugatma DBMS ، على سبيل المثال Access و dBase و Clipper.

حدد أن المشغلات والإجراءات التي تم حفظها يجب كتابتها بلغة البرمجة ، وهي امتدادات إجرائية للغة SQL. تسمح لك العبارات الموسعة بوصف الخوارزميات ، على سبيل المثال ، do… while، if… then… else، المستخدمة في لغة SQL نفسها. На відміну від мови SQL, що підпорядковується стандарту, його процедурні розширення ніяк не стандартизовані, і різні СУБД використовують різні синтаксичні конструкції для реалізації тих самих алгоритмічних конструкцій, але обговорення відмінностей у синтаксисі розширень SQL для різних СУБД виходить за рамки цієї статті.

لتوضيح كيف يمكن الفوز بالمظهر والمشغلات والإجراءات المحفوظة ، اخترنا Microsoft SQL Server 7.0 وقاعدة بيانات NorthWind ، والتي تم تضمينها قبل مجموعة تسليم DBMS.

بادئ ذي بدء ، قم بالتطبيق ، واحترم أولئك الذين ينفذون ويحفظون المشغلات والإجراءات التي انتصرت في DBMS ، يمكن اعتبارها بمثابة إشارة إلى هذه الإحصائيات. بالإضافة إلى ذلك ، لإنشاء كائنات الخادم ، يُسمح للأمهات التاليات ، كما لو تم إعطاء مسؤول قاعدة البيانات.

من المهم أيضًا أن بعض برامج تشغيل ODBC لا تدعم دورة الإجراءات ، والتي يتم حفظها من إضافات العميل ، ولكن هذه هي الطريقة التي يدعمها نظام DBMS نفسه. قم ببناء الإجراءات التي تم حفظها بنفس الطريقة ، في أقرب وقت ممكن ، يمكن القضاء عليها من المشغلات.

دعنا نلقي نظرة على الحقائق ، ثم نناقش الإجراءات التي تم حفظها ، وننتهي من خلال النظر في المشغلات.

مظهر

التقديم - جدول افتراضي tse ، حدد عدد الأعمدة في أحد الجداول. لا توجد بيانات حقيقية ، فقط استعلام SQL من نوع SELECT ، يعرض نفس البيانات والجداول التي من الضروري أخذها عند العودة إلى التمثيل الأول. Z tsієї point zoru yavlennya - tse ask، scho zberіgaєtsya.

يتم تقديم معظم vipadkiv مع انتصارات لسلامة البيانات. على سبيل المثال ، يمكن الوصول إلى الشمامسة من فئة coristuvachiv قبل ظهورهم ، ولكن ليس في الجدول ، يمكنهم تكوين البيانات ؛ بالإضافة إلى ذلك ، يمكن لاستعلام SQL تعيين معلمة USER (الاسم ، الذي بموجبه مسجل koristuvach) ، وفي هذه الحالة ، ستندرج البيانات المتاحة عند العودة إلى التاريخ تحت اسم koristuvach.

فيما يلي الخصائص الرئيسية للمظهر:

  • تتصرف yavlennya مثل الطاولة ؛
  • تجلى عدم الانتقام من البيانات ؛
  • يمكن أن تكسب عمليات الإرسال المزيد من البيانات من نفس الجدول.

لإنشاء مظاهر ، يمكننا تعديل اقتراح SQL CREATE VIEW وتعديله باستخدام اقتراح ALTER VIEW وحذفه باستخدام اقتراح DROP VIEW.

لنلقِ نظرة على عبارة CREATE VIEW ، والتي تسمح لك بإنشاء طريقة عرض لقاعدة بيانات متدفقة.

إنشاء عرض الاقتراح

بناء جملة الاقتراح الخاص بإنشاء بيان يخمن اقتراح SQL SELECT مع عدد من الكلمات الأساسية الإضافية. يوجد أدناه بناء جملة بسيط:

إنشاء عرض اسم العرض باسم select_statement

تحدد الوسيطة view_name اسم العرض. تتيح لك الكلمة الرئيسية ، المطابقة في Microsoft SQL Server ، إرفاق النص الأصلي لاقتراح CREATE VIEW في جدول syscomments.

تشير الكلمة الأساسية AS إلى استعلام SELECT المطبق بالفعل عند العودة قبل التسجيل. انتبه إلى أن الطلب لا يمكن أن يحل محل الكلمات الأساسية ORDER BY أو COMPUTE أو COMPUTE BY أو INTO ولا يمكن الرجوع إلى الجدول الزمني.

لتعديل البيان الذي تم إنشاؤه مسبقًا ، اتبع الاقتراح ALTER VIEW ، كما هو موضح في القسم المسيء.

إسقاط عرض الاقتراح

اقتراح Tsya vikoristovuєtsya لـ vydalannya vyavlennya z da nih. عندما ترى الجداول من قاعدة البيانات ، يمكنك مشاهدة جميع العبارات التي تشير إليها. اقتراح Vikoristovuyuchi tsyu ، نحن مذنبون بقول im'ya vyavlennya ، scho saw. بعد رؤيتها ، يتم عرض جميع المعلومات الخاصة بالمعلومات الجديدة من جداول النظام.

نقطة أخرى ، إذا كنت بحاجة إلى رؤيتها ، يمكنك أن تلوم عقلك على أن بنية الجداول ، التي تقوم عليها ، قد تغيرت بعد إنشاء هذه الظاهرة. يمكنك رؤية vistava في طريقة العرض هذه ، ثم إنشائها مرة أخرى لاقتراح CREATE VIEW الإضافي.

مظاهر الخلق و vikoristannya

يتم استخدام اقتراح CREATE VIEW لإنشاء بيان يسمح لك بتغيير البيانات ، كما لو كان سيتم إعطاؤها للمغنين. يتم إنشاء عمليات الإرسال في قاعدة البيانات الحالية ويتم تجميعها ككائن.

أفضل طريقة لإنشاء مظهر هي إنشاء استعلام SELECT ، وبعد إساءة تفسيره ، قم بإضافة الجزء المفقود من اقتراح CREATE VIEW. دعنا نلقي نظرة على النص الناتج لإعلان المنتجات حسب الفئة في قاعدة بيانات NorthWind (القائمة 1).

الصف الأول ، الرؤى بخط عريض ، هو الذي يقدم اقتراح SQL لإنشاء عبارة SELECT ، التي تفوز بالروبوت لاختيار البيانات. تحدد جملة SELECT التي سيتم تطبيقها على هذه البيانات الحقول من جدولين - حقل CategoryName من جدول CATEGORIES وحقول ProductName و QuantityPerUnit و UnitsInStock و Discontinued من جدول المنتجات. بعد هذه البيانات ، يتم ربط الجدولين بواسطة حقل معرف الفئة ، ويتم تضمين فقط تلك المنتجات الموجودة في المخزون (معيار div بعد الكلمة الأساسية WHERE) في مجموعة البيانات الناتجة. تظهر نتيجة العودة إلى التقديم الأول في الشكل. واحد .

الآن دعونا ندلي ببيان ، كما لو كنا نعرض جميع مناطق منطقة مماثلة. الغرض من العرض هو الخروج من الهجوم (القائمة 2).

بعد العبث بحقيقة أن اقتراح SELECT يقوم بتدوير النتائج كما نحتاج ، نضيف عبارة CREATE VIEW ونضيف اسم EASTTERR الذي تم إنشاؤه (قائمة 3).

بدلاً من إنشاء نص يتم إرساله يدويًا ، يمكنك استخدام الأدوات المرئية للدخول إلى مستودع DBMS. على التين. يوضح الشكل 2 كيف يمكن إنشاء التطبيق نفسه من خلال أداة View Designer الإضافية ، وهي جزء المستودع في Enterprise Manager ، والتي تأتي قبل Microsoft SQL Server.

يسمح لك الجزء العلوي من "مصمم العرض" بتحديد كيفية ربط الجداول والحقول التي يتم عرضها في البيانات. أدناه يمكنك إدخال جداول وحقول باسم مستعار ، واستبدال قيمها ، وطريقة عرضها. وضع Dalі النص النهائي للإخطار ونتائج yogo vikonannya.

أولاً ، اسمحوا لي أن أنهي نظرة قصيرة حولك ، وسنتحدث قليلاً عن هؤلاء ، وكيفية الحصول على معلومات إضافية عنها. في Microsoft SQL Server 7.0 ، يمكننا تعديل إجراءات النظام التالية المحفوظة:

  • لاسترداد معلومات حول عمليات الإيداع ، يمكنك استخدام إجراء النظام sp_help. على سبيل المثال ، sp_help EastTerr لتغيير الموقف بشأن الحادث ؛
  • لتحرير نص الإدخال ، يمكنك تعديل إجراء sp_helptext ، الذي تم حفظه ؛
  • لمعرفة قائمة الجداول التي يتم تخزين التمثيل بها ، يمكنك استخدام إجراء النظام sp_depends؛
  • لإعادة تسمية العبارة ، يمكنك تعديل إجراء نظام sp_rename ، والذي يتم حفظه.

لقد نظرنا في الأشخاص الذين قسمناهم ، وكيفية الحصول على الدليل لإزالة البيانات ، وكيفية تلبية هذه المعايير وغيرها. دعنا ننتقل إلى بقية المؤخرة. توجد عدة مناطق في قاعدة بيانات NorthWind ، ولتحديد قائمة أقاليم المناطق المحددة ، نحتاج إلى العديد من الإعلانات المختلفة. يمكن التغاضي عن المهمة ، فقد يكون yakbee قد اجتاز قيمة معرف المنطقة كمعامل. من الممكن العمل من أجل إجراءات إضافية ، ما يجب الاهتمام به ، والذي سنتحدث عنه في القسم الهجومي.

إجراءات التوفير

الإجراء الذي تم حفظه هو تجميع مجموعة من مقترحات SQL ، وفورات في قاعدة البيانات كتسمية للكائن والتسلسل كجزء شفرة واحد. يمكن أن تقبل إجراءات الحفظ المعلمات وتدويرها. إذا قمت بإنشاء إجراء تم حفظه ، يقوم الخادم بتجميعه ووضعه في ذاكرة التخزين المؤقت ، والتي يتم توزيعها ، وبعد ذلك يمكن حظر رمز الترجمة بواسطة الشارات. إذا تغلب البرنامج على الإجراء المراد حفظه ، فإنه يمرر المعلمات حسب الحاجة ، ويفوز الخادم بالإجراء دون إعادة الترجمة.

تتيح لك إجراءات التوفير زيادة إنتاجية البرامج. في المقام الأول ، porіvnjano іz طلبات SQL كبيرة الحجم ، والتي تغلبت عليها برامج العملاء ، تستغرق الرائحة الكريهة أقل من ساعة للتحضير قبل النهاية ، ويتم تجميع الرائحة الكريهة وحفظها بالفعل. من ناحية أخرى ، تكون حركة المرور أقل أيضًا في الأوقات ، وأقل في أوقات عمليات نقل استعلام SQL ، ويتم إرسال عدد أقل من البيانات في الروابط. أرز. 3 إجراءات أسبوعية توضيحية يتم اتخاذها بالملحق الخاص بالعميل.

يتم إعادة تجميع إجراءات التوفير تلقائيًا ، كما لو كانت مع الأشياء ، وتصب الرائحة الكريهة فيها ، وتغيير zrobleno be-yaki ؛ іnakshe kazhuchi ، نتن zavzhdi الفعلي. كما ذكرنا سابقًا ، يمكن أن تتخذ الإجراءات التي تم حفظها المعلمات التي تسمح للوظائف الإضافية المختلفة بالفوز بالإجراء نفسه ، مجموعات مختلفة من بيانات الإدخال zastosovuyuchi.

إجراءات الحفظ مطلوبة لدعم تكامل البيانات وتنفيذ قواعد العمل. في بعض الأحيان ، مرونة dodatkova ، تتوفر الأجزاء ، مع تغيير قواعد العمل ، يمكنك تغيير نص الإجراء ، دون تغيير إضافات العميل.

لإنشاء الإجراءات وتغييرها وتعديلها ، استخدم مقترحات SQL الخاصة - إنشاء الإجراء وتعديل الإجراء وإجراء الإسقاط. ننظر إليهم في القسم الهجومي.

إجراء إنشاء الاقتراح

يتم اختيار عبارة "CREATE PROCEDURE" لإنشاء الإجراء المطلوب حفظه. قد يكون هناك صيغة تحليل مسيئة:

إنشاء PROC proc_name [(parameter data_type) [= افتراضي]] [...] AS sql_statements

تقوم وسيطة proc_name بتعيين اسم الإجراء ، والذي يمكن حفظه إذا كان من الممكن أن يكون فريدًا داخل قاعدة بيانات مؤشر الترابط. تحدد الوسيطةparameter معلمة إجراء. يمكن أن تحتوي جملة CREATE PROCEDURE على معلمة واحدة أو أكثر. على الرغم من أن المعلمة لا تحتوي على قيمة للترقيات ، فقد يكون هناك تحويلات من قبل المراسل (أو ملحق العميل) في إطار ساعة الإجراء الأسبوعي. في Microsoft SQL Server 7.0 ، عدد معلمات الإجراء التي يتم اتخاذها غير مسؤولة عن تجاوز 1024؛ ل umovchannyam الرائحة الكريهة الأم mozhut znachennya NULL.

بشكل ملحوظ ، يمكن أن يفرض وجود آليات عالمية للوصول إلى البيانات قيودًا إضافية على عدد معلمات الإجراء التي يتم حفظها. على سبيل المثال ، برنامج تشغيل BDE لـ Oracle 8 مصمم للعمل فقط مع الإجراءات ، التي لا يتغير عدد المعلمات منها 10.

تحدد الوسيطة data_type نوع البيانات للمعلمة. يمكن استخدام الكلمة الرئيسية الافتراضية لتعيين قيمة وراء العرض الترويجي - يمكن أن تكون ثابتة أو فارغة. عندما يتم تحديد قيمة لقفل ، يمكن ترك الإجراء بدون قيمة للمعامل. وبالمثل ، يستخدم الإجراء معلمة مع الكلمة الأساسية LIKE ، ويمكن استبدال قيمة الترويج بأحرف المجموعة (٪ و _ و [^]).

تشير الكلمة الأساسية OUTPUT إلى المعلمة التي يجب تشغيلها.

تشير الكلمة الأساسية AS إلى أن الإجراء هو المسؤول عن التحايل بين رؤية عدد مقترحات SQL والاقتراحات على الامتداد الإجرائي لـ SQL الخاص بهذا الخادم.

سيتم حفظ الإجراء ، الذي تم إنشاؤه لبند CREATE PROCEDURE الإضافي ، من قاعدة البيانات المتدفقة. في Microsoft SQL Server ، يتم وضع أسماء الإجراءات في جدول نظام sysobjects ، ويتم وضع نص الإخراج في جدول syscomments.

لتغيير ما تم القيام به في وقت سابق ، يتم اختيار الإجراء التالي للفوز بإجراء تعديل الاقتراح ، الموصوف بإيجاز في القسم التالي.

إجراء إسقاط العرض

اقتراح Tsya vikoristovuetsya للإجراءات البعيدة المأخوذة من قاعدة البيانات. يأخذ اقتراح DROP PROCEDURE حجة واحدة ، اسم الإجراء المراد رؤيته.

عند إزالة الإجراءات التي تم حفظها ، تتم إزالة المعلومات المتعلقة بها من جداول النظام sysobjects و syscomments.

إنشاء الإجراءات المختارة المحفوظة

في الفرع المخصص للأحداث ، أولينا الاحترام لتلك التي كان من الممكن أن تكون في متناول اليد ، حتى نتمكن من تمرير معلمة إلى العرض التقديمي لاستبدال قيمة معرف المنطقة لاختيار واحدة من المناطق الأربع في قاعدة بيانات NorthWind. لننظر إليه مرة أخرى ، والذي يحول قائمة المناطق إلى المنطقة:

حدد الأقاليم. المنطقة. الوصف ، المنطقة ، المنطقة الوصف من الأقاليم INNER JOIN المنطقة على الأقاليم. RegionID = المنطقة.

لتحديد منطقة أخرى ، نحتاج إلى تغيير الرأي في جملة WHERE في باقي الصف. أيضًا ، نظرًا للتغييرات التي أجريناها (تسمى RegID) ، يمكننا اختيار واحدة من أربع مناطق دون تغيير الأجزاء الأخرى من التسجيل.

تحتوي قاعدة بيانات NorthWind على العديد من المناطق ذات الأرقام من 1 إلى 4. وهذا يعني أنه يمكن تغيير RegID كنوع كامل. يظهر رمز الإجراء الواجب اتخاذه أدناه:

إنشاء إجراء ShowRegionRegID int AS SELECT Territories.

امنح الائتمان لأولئك الذين قد حرموا النص الكامل لطلب SELECT غير مشغول (في الرؤى بخط مائل) وأضفوا اقتراح CREATE PROCEDURE فقط إلى اسم الإجراء المحفوظ الذي تم إنشاؤه حديثًا (في الصف الأول) ، وإيقاف المعلمة (في الصف الآخر) والكلمة الأساسية AS ، مقترحات scho vkazuє cob ، حقًا vykonuyut diї.

نتيجة إجراء محلل استعلام SQL Server الذي تم إنشاؤه لـ RegID = قراءتان في الشكل. 3.

من الواضح أنه يمكننا حفظ الإجراءات التي يتم حفظها ، ليس فقط لتنفيذ إصدارات موسعة من المظهر ، ولكن لطلبات SELECT "الفكرية". توفر إجراءات التوفير آليات تسمح لك بأتمتة الكثير من المهام الروتينية.

باستخدام Microsoft SQL Server 7.0 ، يمكننا أيضًا تعديل إجراءات حفظ النظام للعمل مع أهم الإجراءات المحفوظة:

  • sp_stored_procedures - عرض قائمة الإجراءات للحفظ ؛
  • sp_helptext - إظهار نص الإجراء المراد حفظه ؛
  • sp_depends - إظهار معلومات حول ثبات إجراءات الحفظ ؛
  • sp_procoption - تعيين الخيارات للإجراءات التي تم حفظها أو تعيينها ؛
  • sp_recompile - إعادة ترجمة الإجراء في وقت الأسبوع التالي ؛
  • sp_rename - قم بتغيير اسم الإجراء.

إجراءات النظام التي تم حفظها

نحن نتحدث عن Microsoft SQL Server ، لكننا نعني العدد الكبير من إجراءات النظام التي يتم حفظها وتنفيذها من قبله. تبدأ أسماء إجراءات النظام المحفوظة من SP_ أو XP_ ويتم حفظها في قاعدة البيانات الرئيسية. في كثير من الأحيان ، وصفنا بالفعل أفعال الإجراءات المنهجية المنتصرة التي يتم حفظها.

كشف الاحترام ، أن المشغلات ليست مذنبة بتحويل بيانات coristuvachev.

يمكن أن يحتوي اقتراح CREATE TRIGGER على جدولين خاصين. على سبيل المثال ، يمكن أن يكون للجداول المحذوفة والمُدرجة نفس بنية الجدول ، ويتم تعيين مشغل له ، وحذف القيم القديمة والجديدة للسجلات التي تم تغييرها. على سبيل المثال ، يمكننا تحريف اقتراح SQL التالي للبحث عن السجلات البعيدة:

حدد * من حذف

على الطاولة يوضح الشكل 3 كلاً من الجداول المحذوفة والمُدرجة لجميع التغييرات المحتملة في البيانات.

لتغيير مشغل علني ، اتبع الاقتراح ALTER TRIGGER. لنتحدث عن شيء جديد في القسم الهجومي.

بالنسبة للكوز ، نحتاج إلى إضافة حقلين جديدين إلى الجدول ، حيث سيتم تقليل الأرقام. وهي їх مُحدَّث بواسطة (اسم المدير الذي أوقف السجل) و مُحدَّث متى (الساعة التي تم فيها تغيير السجل). لنقم بإنشاء مشغل يسمى KeepTrack. رمز محور اليوغا:

قم بإنشاء برنامج KeepTrack TRIGGER على إدخال العملاء وتحديثه حسب التحديث الذي يحدده العملاء.

كما ترون من النص الناتج للمشغل ، يتم فحص vin بعد عمليات الجلد INSERT و UPDATE في جدول العملاء. سيحفظ هذا المشغل اسم المدير (قاعدة البيانات) من حقل العملاء ، محدث حسب ، ويغير التاريخ والساعة من حقل العملاء. يتم استبعاد أرقام البيانات من الجدول الزمني ، المقدمة.

مثل Bachimo ، يتيح لك هذا المشغل متابعة التغييرات وإدراج سجلات جديدة في الجدول.

قبل ذلك ، كيف ننهي نظرة سريعة على المشغلات ، فنحن مذنبون بتقديم المساعدة ، حتى تتمكن من معرفة المعلومات حول المحفزات. يخزن جدول sysobjects معلومات حول المشغلات والأنواع ، ويقوم جدول syscomments بتخزين نص الإخراج الخاص بها.

فيسنوفوك

في هذا الجزء ، نظرنا في أنواع قليلة من كائنات قاعدة البيانات - الإجراءات والاكتشاف والمحفزات التي تم حفظها. لقد أدركنا التقدم:

  • المظهر - tse Virtual table ، تم إنشاء الصوت كمجموعة فرعية من الأعمدة في عدد واحد من الجداول. لإنشاء عرض ، يتم استخدام اقتراح CREATE VIEW وتعديله واقتراح ALTER VIEW ولحذف اقتراح DROP VIEW.
  • الإجراء الذي تم حفظه هو تجميع مجموعة من مقترحات SQL ، وفورات في قاعدة البيانات كتسمية للكائن والتسلسل كجزء شفرة واحد. لإنشاء إجراء يتم حفظه ، يتم تعيين اقتراح إنشاء الإجراء ، للتغيير - تغيير الإجراء ، والحذف - إجراء الإسقاط.
  • المشغل هو نوع خاص من الإجراءات يتم حفظه ، حيث يتم استدعاؤه تلقائيًا ، إذا تمت إضافة البيانات الموجودة في الجدول الفردي ، أو رؤيتها أو تغييرها من أجل مقترحات SQL الإضافية ، INSERT أو DELETE أو UPDATE. يتم إنشاء المشغلات للمساعدة في عبارة CREATE TRIGGER. لتغيير المشغل ، يتم تحديد اقتراح ALTER TRIGGER وإزالة اقتراح DROP TRIGGER.

كمبيوتر 12 "2000

حفظ إجراءات SQL - اختراق وحدة البرنامج ، والتي يمكن حفظها من النظر إلى كائنات مختلفة. بمعنى آخر ، الكائن الذي يحتوي على تعليمات SQL. يمكن استخدام الإجراءات المحفوظة في عملاء التطبيق لتحقيق إنتاجية جيدة. بالإضافة إلى ذلك ، غالبًا ما يتم استدعاء هذه الكائنات من سيناريوهات أخرى ، أو لإلهام نوع آخر من التوزيع.

دخول

من المهم لأي شخص أن يعرف أنها تشبه الإجراءات الأخرى (على سبيل المثال ، MS SQL). ربما انت على حق. قد يكون لديهم معلمات متشابهة ، يمكنهم رؤية قيم مماثلة. وفوق ذلك ظلت الرائحة الكريهة عالقة لمدة ساعة. على سبيل المثال ، ترتبط الرائحة الكريهة بقواعد بيانات DDL و DML ، وكذلك مع الوظائف الأساسية (الاسم الرمزي - UDF).

في الواقع ، فإن إجراءات SQL التي يتم الاعتناء بها قادرة على مجموعة واسعة من المزايا ، لأنها ترى منتصف هذه العمليات. Bezpeka ، تنوع البرمجة ، الإنتاجية - كل ذلك يضيف إلى النواة ، التي تعمل من قواعد البيانات ، المزيد من البيانات. انخفضت ذروة شعبية الإجراءات في 2005-2010 ، إذا تم إصدار البرنامج تحت اسم "Microsoft" تحت اسم SQL Server Management Studio. بمساعدة قواعد البيانات ، أصبح الأمر أبسط وأكثر عملية وأكثر ملاءمة. من الصخرة في العالم تكتسب هذه الشعبية بين المبرمجين. اليوم ، هو برنامج سليم تمامًا ، مثل koristuvachivs ، مثل "الاتصال" بقواعد البيانات ، أصبح مثل "Exel".

عند النقر فوق الإجراء ، تتم معالجته على الفور من قبل الخادم نفسه دون الحاجة إلى حماية البيانات من أن vtruchannya coristuvacha. إذا كان الأمر كذلك ، يمكنك أن تكون zdiyasnyuvati مثل تغيير بعيد ، vikonannya. لكل ذلك ، أنت بحاجة إلى مشغل DDL ، والذي تم تعليمه ذاتيًا لسرقة الأجزاء الأكثر تعقيدًا من معالجة الكائن. علاوة على ذلك ، يبدو أنه سريع جدًا ، والخادم في الواقع ليس navantazhuetsya. يتيح لك هذا النوع من السرعة والإنتاجية نقل كميات كبيرة من المعلومات بسهولة من الخادم إلى الخادم.

لتنفيذ هذه التقنية ، تعتمد الروبوتات المزودة بالمعلومات على برمجة mov. قبلهم ، يمكنك أن ترى ، على سبيل المثال ، PL / SQL مثل Oracle و PSQL في أنظمة InterBase و Firebird ، بالإضافة إلى Transact-SQL الكلاسيكي "Microsoft". يتم التعرف على جميع الروائح الكريهة لإنشاء واستكمال الإجراءات المحفوظة ، والتي تسمح بإتقان الخوارزميات في قواعد البيانات الرائعة. من الضروري لأولئك الذين يديرون هذه المعلومات أن يكونوا قادرين على حماية جميع الكائنات من الوصول غير المصرح به إلى أنظمة الطرف الثالث ، ومن الواضح ، إنشاء أو تغيير أو عرض البيانات الأخرى.

إنتاجية

يمكن برمجة كائنات قاعدة بيانات Qi بمسارات مختلفة. يسمح Tse لـ Coristuvachas باختيار نوع الطريقة المتغيرة ، والتي ستكون الأنسب ، والتي ستوفر قوة تلك الساعة. بالإضافة إلى ذلك ، تتم معالجة الإجراء نفسه ، مما يسمح لك بإخفاء أسعار الصرف الرائعة لكل ساعة بين الخادم والخادم. أيضًا ، يمكن إعادة برمجة الوحدة وتغييرها في أي وقت. على وجه الخصوص ، من المهم ملاحظة المرونة ، التي يُتوقع من أجلها إطلاق إجراء SQL المحفوظ: هذه العملية تشبه إلى حد كبير غيرها ، لجعلها فعالة وعالمية.

بيزبيكا

يتم استخدام هذا النوع من معالجة المعلومات في عمليات مماثلة ، مما يضمن تحسين الأمان. تسي bezpechuetsya لحساب حقيقة أن وصول الآخرين إلى الإجراءات يمكن إيقافه مرة أخرى. تسي للسماح للمسؤول بتنفيذ عمليات معهم بشكل مستقل ، وعدم الخوف من معلومات perehoplennya أو الوصول غير المصرح به إلى قاعدة البيانات.

نقل البيانات

يعتمد الاتصال بين إجراء SQL ، الذي يتم إجراؤه ، والملحق الخاص بالعميل على معلمات وقيم مختلفة ، يتم تدويرها. دعونا لا ننقل البيانات obov'yazkovo إلى الإجراء ، الذي يتم حفظه ، تتم معالجة المعلومات (بشكل أساسي عند الطلب) ومعالجتها لـ SQL. نظرًا لأن الإجراء ، الذي تم حفظه ، قد أكمل عمله ، فهناك حزم بيانات تعود (ale ، أعرف ، للأخطاء) إلى الملحق ، حتى تتمكن من استخدام أساليب اليوجا ، والتي يمكنك العثور على المساعدة من خلالها تعرف على كيفية حفظ إجراء SQL ، لذا قم بتشغيل ، على سبيل المثال:

تمرير بيانات معلمة إضافية لنوع الإخراج ؛

نقل البيانات لمساعدة المشغل ؛

قوة الإشادة بمساعدة المشغل على الاختيار.

والآن دعونا نلقي نظرة ، كما لو كنا ننظر إلى العملية برمتها في المنتصف.

1. إنشاء إجراء EXEC محفوظ في SQL

يمكنك إنشاء إجراء في MS SQL (استوديو الإدارة). بعد إنشاء الإجراء ، سيتم إعادة ترتيبه من بيانات قاعدة vuzol البرمجية ، حيث سيتم إنشاء الإجراء من قبل المشغل. لإجراء vykonannya SQL ، scho zberіgayutsya ، vykoristovuyut EXEC-process ، kaki m_sti іm'ya للكائن نفسه.

عند دمج الإجراء ، يتم الإعلان عن الاسم أولاً ، وبعد ذلك يتم تحديد واحد أو أكثر من المعلمات المعينة لك. يمكن أن تكون المعلمات غير ملزمة. نظرًا لأنه سيتم كتابة المعلمات (المعلمات) الخاصة بجسم الإجراء ، فمن الضروري إجراء العمليات اللازمة.

على اليمين ، حيث يمكن تغيير الجسد محليًا ، و roztashovani في nіy ، وتغيير tsі محليًا أيضًا وفقًا للتاريخ السابق للإجراءات. بمعنى آخر ، يمكن رؤيتها فقط في منتصف نص إجراء Microsoft SQL Server. تكون إجراءات التوفير في بعض الأحيان محلية vvazhayutsya.

وبالتالي ، من أجل إنشاء إجراء ، نحتاج إلى اسم الإجراء ومعلمة واحدة على الأقل في نص الإجراء. احصل على الاحترام الذي يمثله الخيار الأكثر أهمية في مثل هذا الوقت هو إنشاء إجراء لاسم المخطط في المصنف.

قد يكون نص الإجراء نوعًا من الأمثلة ، مثل إنشاء الجداول ، وإدراج صف واحد أو صف من الصفوف في الجداول ، ونوع قاعدة البيانات وطبيعتها ، وما إلى ذلك. يقع الجسم البروتيني للإجراء بين انتصارات العمليات الحالية في العملية الجديدة. تم بناء أعمال الترسيم الهامة أدناه:

الجسم غير مذنب في القيام بأي إجراء آخر يتم إنقاذه ؛

يمكن للجسم إصدار عفو عن الشيء ؛

الجسم ليس مذنبا بخلق المحفزات اليومية.

2. تثبيت تغيير في جسم الإجراء

يمكنك تغييرها محليًا إلى جسم الإجراء ، وسيتم تغيير الرائحة الكريهة فقط في منتصف جسم الإجراء. الممارسة الجيدة هي إنشاء الإجراءات التي يتم تغييرها على قطعة خبز الجسم ، والتي يتم حفظها. ولكن من الممكن أيضًا تثبيت التغييرات في أي مكان في جسم كائن معين.

في بعض الحالات ، يمكنك معرفة أنه تم تثبيت بعض التغييرات في صف واحد ، وأن طبقة معلمة التغيير معززة بالماء. أيضًا ، يرجى مراعاة أنه يمكنك تغيير البادئة @. يمكنك إدراج تغيير لنوع الإجراء ، أينما تريد. على سبيل المثال ، يمكن التعبير عن تغيير @ NAME1 بالقرب من نهاية الإجراء. من أجل إعطاء معنى التغيير الذي لا صوت له ، يتم جمع مجموعة من البيانات الخاصة. على أساس الموقف ، إذا تم التعبير عن أكثر من تغيير واحد في صف واحد ، في مثل هذه الحالة يكون هناك أقل من مجموعة واحدة من البيانات الخاصة.

في كثير من الأحيان ، تسأل الاختبارات القصيرة: "كيف تتعرف على قيمة صغيرة في عبارة واحدة في عنوان الإجراء؟" نحن سوف. إطعام نبات الكيكافا ، لكن من الأسهل جعله أكثر ثراءً ، أنت لا تعتقد ذلك. تلميح: لمساعدة مثل هذه الأزواج ، مثل "Select Var = value". يمكنك التغلب على الصعاب ونشرها بغيبوبة.

في أكثر أعقاب متلاعبة ، يُظهر الناس إنشاء إجراء بسيط ، وما يتم الاعتناء به ، و vikonannya її. بالنسبة لهذا الإجراء ، يمكنك أن تأخذ معلمات مثل العملية ، وما تسميه ، والقيمة قريبة من القيمة الجديدة (لكن لا تغيرها). مع هروب الرائحة الكريهة ، تبدأ العمليات في منتصف الجسم. على سبيل المثال ، كيفية إنشاء إجراء ، وكيفية قبول موقع المنطقة من المشترك ، وما يجب الاتصال به ، وتحويل البيانات حول هؤلاء ، وعدد المؤلفين الذين يتم إرسالهم إلى موقع تلك المنطقة. سيأخذ الإجراء في الاعتبار جداول مؤلفي قاعدة البيانات ، على سبيل المثال ، الحانات ، حتى نهاية قائمة المؤلفين. لإلقاء نظرة على قاعدة البيانات ، على سبيل المثال ، تلتقط Google نص SQL من جانب SQL2005.

في الحالة الأمامية ، يأخذ الإجراء معلمتين ، سيتم تسميتهماState وCity باللغة الإنجليزية. نوع البيانات يتوافق مع النوع المخصص للملحق. يمكن تغيير عنوان الإجراء داخليًا بواسطةTotalAuthors (لجميع المؤلفين) ، وسيتم تغييره بغرض عرض العدد. Dalі z'yavlyaєtsya razdіl vyboru zaputu و yakii all pіdrakhovuє. Nareshti ، podrahovane znachennya vіdobrazhaєєtsya vіknі vyvodu لمساعدة المشغل لصديق.

كيف أحفظ الإجراء مع SQL Viconati

هناك طريقتان لمتابعة الإجراء. يظهر المسار الأول ، ويمرر المعلمات ، حيث تظهر قائمة الأقسام بعد اسم الإجراء. يجوز لنا معنيين (كما في المؤخرة الأمامية). يتم أخذ القيم لمعاملات التغيير الإضافية للإجراءينState و @ City. لمن تكون الطريقة الكاملة لنقل المعلمات في ترتيب مهم. هذه الطريقة تسمى تمرير الحجة الترتيبية. من ناحية أخرى ، يتم التعرف على المعلمات بشكل لا لبس فيه ، وبهذه الطريقة لا يكون الترتيب مهمًا. هناك طريقة أخرى للقيام بذلك وهي تمرير الوسائط المسماة.

يمكن تغيير الإجراء كمعيار. هكذا تسير الأمور ، كما هو الحال في المؤخرة الأمامية ، ولكن هنا فقط تظهر المعلمات. لذلك يتم أخذ المعلمةCity أولاً ، ويتم أخذState من قيم القفل. ستبدو المعلمة خلف القفل وكأنها على ما يرام. يتم تمرير إجراءات SQL التي تم حفظها كمعلمات بسيطة. في هذه الحالة ، ضع في اعتبارك أن معلمة UT تتجاوز قيمة قفل SA. يحتوي vicoon الآخر على أكثر من قيمة وسيطة واحدة للمعلمة @ City ، وتأخذ المعلمة @ State قيمة مفتاح CA. ستكون تحديثات البرنامج سعيدة ، بحيث يتم تحديث التغييرات الخاصة بالاختصارات بالقرب من نهاية قائمة المعلمات. بطريقة مختلفة ، لا يمكننا vykonannya ، وحتى أنت مذنب بالتدرب على نقل وسيطات التسمية ، وهو أفضل وأكثر قابلية للطي.

4. حفظ إجراءات خادم SQL: طرق التدوير

هناك ثلاث طرق مهمة لإدارة البيانات في إجراءات الرهن المحفوظة. يتم إعادة تأهيل الرائحة الكريهة أدناه:

تحويل قيمة الإجراء الذي يتم اتخاذه ؛

استبعاد معلمة الإجراءات التي يتم حفظها ؛

اختر أحد الإجراءات التي تم حفظها.

4.1 تحويل قيمة حفظ إجراءات SQL

في هذه الطريقة ، يعطي الإجراء قيمة التغيير المحلي ويدوره. يمكن قلب الإجراء دون تأخير. في بعقب الهجوم ، قاموا بإنشاء إجراء ، كما لو كان تسليم عدد كبير من المؤلفين. إذا قارنت هذا الإجراء بالإجراءات السابقة ، فيمكنك التفكير في استبدال المعنى للآخر بالإجراء العائد.

الآن دعنا نتساءل عن كيفية اتباع الإجراء وإدخال المعنى ، وكيفية الالتفاف. إجراء Vikonannya vmagaє vstanovlennya zminnoї ذلك الصديق ، يتم تنفيذ الياك بعد العملية. لاحظ أنه يمكنك استبدال عامل التشغيل Select ، على سبيل المثال ، SelectRetValue ، وكذلك OutputValue.

4.2 إزالة معلمات إجراءات SQL التي تم حفظها

يمكن أن يكون معنى vіdpovіd vikoristane لتحويل zminnoy واحد ، والذي قمنا بتخزينه في المؤخرة الأمامية. متغير معلمة الإخراج يسمح للإجراء بتصحيح قيمة التغيير للجانب الآخر. يتم تحديد معلمة الإخراج بنفس الكلمة الرئيسية "الإخراج" عند إنشاء الإجراء. إذا كانت معلمة الوظيفة عبارة عن معلمة إخراج ، فسيكون كائن الإجراء مسؤولاً عن تعيين قيمتها. يتم استخدام إجراءات حفظ SQL ، والتي يمكن استخدامها بشكل أقل ، في حالات مختلفة مع معلومات الحقيبة الفرعية.

سيكون لتطبيقنا اسمان رسميان: @ TotalAuthors و @ TotalNoContract. يشار إلى الرائحة الكريهة من خلال قائمة المعلمات. تعطي Qi zminnі معنى منتصف جسم الإجراء. إذا فزنا بالمعلمات ، يمكن للمشترك تحديد القيمة المدرجة في منتصف نص الإجراء.

بالإضافة إلى ذلك ، في السيناريو السابق ، تم إجراء تغييرين لزيادة القيمة ، كما لو كان يتم حفظ إجراء MS SQL Server في معلمة الإخراج. ثم يتم التغلب على الإجراء من خلال مسار تحديد القيمة الطبيعية لمعامل CA. المعلمات التالية هي نفسها ، وبعد ذلك ، يتم إرسال التغييرات التي لا صوت لها بالترتيب. التقط الاحترام بأن ساعة مرور الأيام المتغيرة هي الكلمة الأساسية هنا أيضًا. بعد أن يكون الإجراء ناجحًا ، يتم عرض الأهمية ، حيث تتحول للحصول على مساعدة إضافية للمعلمات الأخيرة ، لمزيد من التسوية.

4.3 اختر أحد إجراءات SQL للحفظ

تُستخدم هذه التقنية لتدوير مجموعة القيم في جداول البيانات (مجموعة السجلات) إلى الإجراء الكامل الذي يتم اتخاذه. بالنسبة لهذا التطبيق ، فإن إجراء SQL الذي يتم حفظه ، باستخدام معلماتAuthID ، يغذي الجدول "المؤلفون" بمسار عامل التصفية ، ويتم تدوير السجلات بعد معلمةAuthId الإضافية. تتجاوز عبارة التحديد ما يمكن تدويره وتستدعي إجراءات التحديد. عندما يفشل الإجراء ، يتم تمرير "معرف المصادقة" مرة أخرى. مثل هذا الإجراء هنا دائمًا يقوم بتدوير سجل واحد فقط ، وإلا فإنه ضروري. Ale ، الإجراء الذي يتم اتخاذه غير مسموح به لتسليم أكثر من سجل واحد كل يوم. غالبًا ما يكون من الممكن استخدام مثال ، لبعض دورات البيانات ذات المعلمات المختلفة ، بمشاركة حساب التغيير ، هناك طريقة لإعطاء عدد من قيم الكيس.

في نهايةالمطاف

الإجراء الذي يتم حفظه هو استكمال وحدة البرامج الجادة ، والتي تقوم بتشغيلها أو نقلها ، وكذلك تثبيت التغييرات اللازمة على ملحق العميل. إجراء Oskіlki ، الذي تم حفظه ، vikonuєtsya على الخادم نفسه ، يمكن حذف تبادل البيانات مع الالتزامات الكبيرة بين الخادم وملحق العميل (للخصم). يتيح لك ذلك الرجوع إلى إصدار أقدم من خادم SQL ، والذي من الواضح أنه يقع في أيدي حكامهم. أحد الأمور المتوقعة هي إجراءات T SQL التي يعتني بها أولئك الذين يشاركون في إنشاء قواعد بيانات مهمة. أيضًا ، هناك عدد كبير ومهيب من الفروق الدقيقة ، والتي يمكن أن تكون مختلفة عند تنفيذ الإجراءات المحفوظة ، فمن الضروري أكثر لأولئك الذين يخططون للمشاركة في البرمجة ، بما في ذلك على المستوى المهني.