إنشاء إجراء SQL ليتم حفظه. أنواع الإجراءات المحفوظة. Gnuchka إدارة حقوق الوصول

22 حلقة

معرفتي بالكتابة في برنامج WinForms Client / Server الرئيسي بسيطة ، وقد أتيت إليها:

إجراءات Vykoristovuvat التي يتم الاعتناء بها:

  • لكونك عامل آلي قابل للطي. إذا اخترت العمل ، فستحتاج بشكل فعال إلى مؤشر جدول أو مؤقت ، لذلك اتصل بأفضل طريقة لتشغيله في SQL Server.
  • قد تحتاج إلى منع الوصول إلى البيانات. إذا لم تمنح حق الوصول إلى طاولات coristuvachas (أو الأدوار أو أي شيء آخر) ، يمكنك أن تكون مقتنعًا بأن الطريقة الوحيدة للتفاعل معهم هي من خلال المشروع المشترك الذي تم إنشاؤه.

النصر للطلبات الخاصة:

  • بالنسبة إلى CRUD ، إذا لم تكن بحاجة إلى جسر الوصول إلى البيانات (افعل ذلك بالطريقة الأخرى).
  • لأبسط النكات. إنشاء SP لمعايير غير شخصية لنكتة - هذا كل ما يمكن طيها في الخدمة. إذا كان بإمكانك إنشاء طلب وكزة سويدي ، فغمز به.

بالنسبة لمعظم الإضافات الخاصة بي ، فزت مثل SP ، لذا و SQL المخصص ، أريد أن أعرف أن لديّ نائب أقل وأقل SP ، ورائحة كريهة في الحقيبة النهائية برمز مثل C # ، فقط المزيد من التحكم ، والاختبار وتحسين. أوصي باستخدام sql المخصص ثنائي الأسلاك لأنك لا تعرف السبب المحدد.

إجراءات التوفير - عقد على برنامج أمان ، يتم تضمينها ، يعيش مقابل قواعد البيانات. يمكن تغيير رمز الإجراءات والمخطط ذاته لقاعدة البيانات دون تجميع الكود وتطويره ، وبالتالي تُترك مدخلات الإجراء دون تغيير.

عندما تسأل برنامجك ، ستخبر نفسك بوضوح عن نموذج البيانات الخاص بك.

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

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

كشخص لديه بيانات ، لم ألقي نظرة على العمل وراء قاعدة البيانات ، قبل أن يمروا بطلبات مخصصة ، لذلك من المهم بالنسبة لهم أن يتعلموا أو يهتموا بشكل فعال. كيف يمكنني معرفة ما يمكنني المساهمة به في تغيير المخططات؟ بالإضافة إلى ذلك ، لا أعتقد أنه يجب منح coristovats وصولاً مباشرًا إلى جداول قاعدة البيانات بأمان انعكاس (ولا يمكنني مهاجمة حقن SQL فقط ، ولكن أيضًا حقيقة أن التحكم الداخلي الأساسي ، الذي لا يسمح بالحقوق المباشرة و vimagaє vіd usіh koristuvachіv vikoristovyte فقط procs ، المعترف بها للبرنامج ، schob zapobіgti mozhlivogo shahraystvo.

قواعد البيانات موجهة للكائنات ، ويمكن تدمير الكود الذي يبدو جيدًا من وجهة نظر موجهة للكائنات تمامًا من وجهة نظر البيانات الأساسية.

يذكرنا تجار التجزئة لدينا ، من أجل ذلك ، أن كل وصولنا إلى قواعد البيانات يتم إنشاؤه من خلال إجراءات ، حتى نسرع ​​بشكل كبير تصحيح العفو ، بحيث نكمن في البيانات ، ثم ننفذ العملية فقط. البيئة ، وليس إنشاء رمز جديد وإعادة ترجمة وإعادة ميزة في virobnitstvo. نعتقد أن جميع عملياتنا كانت في يد السائق ، وبالتالي فإن التحكم في dzherel ليس مشكلة على الإطلاق. على الرغم من عدم وجود النبيذ في Subversion ، يتم مشاهدة dbas النبيذ بشكل دوري ، ولا يوجد دعم للتحكم في المصدر.

إجراءات الادخار ، بجنون ، قادمة ... تجميع الرائحة الكريهة ، وإلقاء الخطة أمام قطعة خبز العمل ، ويمكنك أن تعتز بحقوقها.

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

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

أود أن أقتبس من Tom Kyte من Oracle هنا ... هذه هي القاعدة المتعلقة بكتابة التعليمات البرمجية ... حتى لو كانت غير متطابقة بعض الشيء ، لكنني أعلم بشكل أفضل ، على ما أعتقد.

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

  • بسهولة otrimat كل طلب نسخ keruvannya ساعة
  • robiti جميع التغييرات للعناية بالبشرة لخوادم قواعد البيانات المختلفة
  • يتضمن تكرار نفس الكود من خلال الكود الخاص بنا

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

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

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

ستُظهر لك نصيحة Google بشأن الإجراء الذي يتم اتخاذه مقابل Dynamic Query بعض الحجج في أي حال ، ومن الأفضل لك قبول قرارك الخاص.

Deyakі rechі ، حول yaki ، من الضروري التفكير: من يحتاج إلى إجراءات ، وما الذي يدخرونه ، على أي حال؟

من الواضح أن الغذاء الذي تحتاجه من الطاقة مهم ، ولكن الأهم من ذلك هو التفكير في تلك التي تكون آمنة مع وجود المشروبات الأكثر خصوصية في المنتصف والموجهة للجزء الأكبر. احذر من المعلمات الخاصة بك واتبع التناقضات النموذجية مثل حقن SQL.

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

أنا متخصص بالنيابة عن المشروبات ، والتي يتم إنشاؤها ديناميكيًا بناءً على إدخال coristuvach.

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

إذا كنت تريد أن تسأل بشكل خاص ، فغيّر رأيك في أنها محددة

معلمات SQL أو SPROC ... لا تهم كثيرًا من حيث الأداء ... يمكنك طلب تحسين أحدهما.

بالنسبة لي ، تتمثل بقية ميزة SPROC في أنه يمكنني إيقاف الكثير من الحقوق لإدارة حقوق SQL ، فقط امنح حقوقي لتسجيل الدخول إلى sprocs ... حتى تتمكن من الفوز بـ SQL Parametized ، وتسجيل الدخول ، والربط بصف الاتصال الخاص بك ، ربما أكثر (سجل من أي نوع من العوامل للاختيار من بينها في أحد الجداول التي يمكنهم الوصول إليها ، على سبيل المثال).

كما في السابق ، كنت أفضّل SQL ذات المعلمات ، وأرغب في ...

حجة الإنتاجية sproc є spirnim - 3 RDBMs العليا تستعيد خطة الشرب وساعات العمل اليومية. تم توثيق يوجو ... ما هو عام 1995 حتى الآن؟

ومع ذلك ، فإن تنفيذ SQL في برنامجك يعد أيضًا تصميمًا رديئًا - صيانة التعليمات البرمجية ، وربما لا يكون مفهومًا جيدًا بما يكفي للأثرياء.

وبالمثل ، يمكن أن يبدأ البرنامج من نقطة الصفر للحصول على ORM إضافي (إضافات من الحقل الأخضر بعيدًا عن kіlkoh!) ، tse vіdminny vibrіr ، نموذج oskіlki لفصلك keruє نموذج DB الخاص بك لمدة ساعة فقط.

نظرًا لعدم توفر بنية ORM ، فقد اخترقنا ملف pidhide مختلطًا لإنشاء ملف XML لموارد SQL لسؤال صف من SQL عن الضرورة (ثم يتم تخزين الرائحة الكريهة مؤقتًا بواسطة البنية التحتية للموارد). تمامًا كما سيتطلب SQL بعض المعالجات الطفيفة التي تختلف عن الكود ، فإنه سيتطلب أيضًا معالجة كبيرة لصف من SQL ، وهو ما نعيد التفكير فيه.

هذا pidkhid الهجين يجعل من السهل إدارة بائعي التجزئة (ربما ، إذا كنت أصغر ، يمكن مسح أجزاء فريقي ، حتى أتمكن من قراءة خطة الطلب) ، والحنجرة هي مجرد إعادة التحقق من SVN. بالإضافة إلى ذلك ، سأطلب منك تبديل RDBM - فقط استبدل ملف موارد SQL (ليس بهذه البساطة كأداة ORM ، بالطبع ، لكنه يعمل مع الأنظمة القديمة أو قاعدة البيانات ، وهي غير مدعومة)

رأيي أن 90٪ من الطلبات و / أو الإجراءات المحفوظة ليست مسؤولة عن تحديد موعد (مقبول يدويًا).

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

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

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

في مقدمة هذه الدورة ، نظر العالم في كيفية استخلاص البيانات من الجدول وتعديل هيكلها وإنشاء قواعد البيانات والكائنات المخفية فيها وتعديلها ورؤيتها. في هذه المقالة ، سنتحدث أكثر عن الكائنات التي تعتبر نموذجية لخادم 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 ، التي تظهر مجموعة المقترحات ، تربح حقًا.

نتيجة إجراء محلل استعلام 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 ، تم إنشاء الصوت كمجموعة فرعية من الأعمدة في عدد واحد من الجداول. يتم استخدام "إنشاء عرض" لإنشاء عرض ، ويتم استخدام "تعديل العرض" لتعديله ، ويتم استخدام "عرض الإسقاط" لحذفه.
  • الإجراء الذي تم حفظه هو تجميع مجموعة من مقترحات SQL ، وفورات في قاعدة البيانات كتسمية للكائن والتسلسل كجزء شفرة واحد. لإنشاء إجراء يتم حفظه ، يتم تعيين اقتراح إنشاء الإجراء ، للتغيير - تغيير الإجراء ، والحذف - إجراء الإسقاط.
  • المشغل هو نوع خاص من الإجراءات يتم حفظه ، حيث يتم استدعاؤه تلقائيًا ، إذا تمت إضافة البيانات الموجودة في الجدول الفردي ، أو رؤيتها أو تغييرها من أجل مقترحات SQL الإضافية INSERT أو DELETE أو UPDATE. يتم إنشاء المشغلات للمساعدة في عبارة CREATE TRIGGER. لتغيير المشغل ، يتم تحديد اقتراح ALTER TRIGGER وإزالة اقتراح DROP TRIGGER.

كمبيوتر 12 "2000

قم بتضمين صف في الإجراء الخاص بك - SET NOCOUNT ON:

باستخدام فيروس DML الصديق للجلد ، يخبرنا خادم SQL على الفور بما يجب فعله بشأن عدد السجلات المسجلة. قد تكون Tsya іnformatsija بالنسبة لنا هي تكلفة الكود ، ولكن بعد ذلك ستكون مثالية تمامًا. من خلال كتابة SET NOCOUNT ON نقوم بتمكين هذه الوظيفة. بالنسبة للإجراءات التي يمكن أن تقضي على عدد الفيروسات أو الدورات ، والتي يمكن أن تؤدي إلى زيادة كبيرة في الإنتاجية ، سيتم تقليل حجم حركة المرور بشكل كبير.

معاملات SQL

تطابق اسم المخطط مع اسم الكائن:

حسنًا ، أعتقد هنا zrazumilo. يتم إعطاء العملية للخادم إلى de shukati ob'єkti و zamіst من ذلك ، للبحث في أقفالك ، ستعرف أين تحتاج إلى الشرب وماذا تأخذه. مع وجود عدد كبير من القواعد والجداول والإجراءات المحفوظة ، يمكن أن يوفر وقتنا وأعصابنا.

معاملات SQL

حدد * من dbo.MyTable - المحور جيد جدًا - استبدل SELECT * من MyTable - وهذا أمر سيء - استدعاء إجراء EXEC dbo.MyProc - أنا آسف مرة أخرى - استبدل EXEC MyProc - سيء!

لا تستخدم البادئة "sp_" في أسماء الإجراءات التي يتم تجنبها:

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

تختلف إذا كانت EXISTS (حدد 1) بدلاً من IF EXISTS (حدد *):

لعكس مظهر الإدخال في الجدول التالي ، فزنا IF EXISTS viraz. تصبح النافذة الدنماركية صحيحة ، لذلك حتى قيمة واحدة ، ليست مهمة "1" ، يتم قلب جميع الأعمدة أو الجدول من النافذة الداخلية. Vіdomі danі ، من حيث المبدأ ليس vikoristovuyutsya. بهذه الطريقة ، من أجل stisnennya حركة المرور في ساعة نقل البيانات ، فمن المنطقي التغلب على "1" ، كما هو موضح أدناه.

حفظ إجراءات 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. يشار إلى الرائحة الكريهة من خلال قائمة المعلمات. يتم إعطاء عدد التغييرات في منتصف جسم الإجراء. إذا فزنا بالمعلمات ، يمكن للمشترك تحديد القيمة المدرجة في منتصف نص الإجراء.

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

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

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

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

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

إذا كانت هناك إجراءات التالية يجب حفظها ، وإذا كنت مذنباً بانتصار بيان في 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إلخ ، دون إبداء ملاحظات متضاربة (على سبيل المثال ، حول الراتب ، وما إلى ذلك ، حول كيف تم تخميننا مسبقًا). الآن يمكننا أن نرى السماح للطلب المباشر للجداول الموظفواحفظه فقط للقراءة من الموضوع. بهذه الطريقة ، يمكننا تحقيق الأمان للحصول على طرق عرض المساعدة.