كيفية تقييد معلمات الإدخال NULL في إجراء Oracle المخزن

StackOverflow https://stackoverflow.com/questions/116525

  •  02-07-2019
  •  | 
  •  

سؤال

لقد كتبت بعض إجراءات أوراكل المخزنة فيها أكثر من 20 معلمة إدخال ومن بينها أكثر من 10 معلمات مطلوبة، أريد كل شيء مع بعض القيمة ولا أريد قبول قيم فارغة لذلك، هل هناك أي شيء يمكنني الإعلان عنه في تعريف الإجراء نفسه والذي يمكن أن يقيد معلمة الإدخال الفارغة أو هل سيتعين علي التحقق من كل قيمة ورفع الاستثناء إذا كانت القيمة المطلوبة فارغة؟

هل كانت مفيدة؟

المحلول

في PL/SQL لا أعرف طريقة للتحقق من كل منها.

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

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

نصائح أخرى

أعلم أن هذا سؤال قديم، ولكن هناك خيار آخر (موصوف هنا):

SUBTYPE varchar2_not_null IS VARCHAR2 NOT NULL;

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

لو NULL إذا تم تمريرها كوسيطة، فستحصل على رسالة خطأ مفيدة جدًا:

cannot pass NULL to a NOT NULL constrained formal parameter
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top