السلام عليكم
في البداية هذا الشرح والمعلومة مجهود شخصي مني أرجوا أن تكون المنفعة متبادلة بيننا
كثيراً ماعانيت من مشكلة إضافة PROCEDURE وجعل عملية Where مرتبطة فقط بالبارمترات المعبئة فقط وتجاهل الفارغة.
شرح المشكلة
لدينا جدول أسماء الموظفين EMP به الحقول (رقم الموظف - اسمه - رقم هاتفه - تاريخ ميلاده وووو الخ )
في احد أجزاء البرنامج ستعمل بحث مثلا بواسطة رقم الموظف ، وجزء آخر ستبحث مثلا باسم الموظف ، وجزء آخر ستظهر كل السجلات بدون بحث.
في السابق كنت أعمل كل PROCEDURE لكل استعلام من الاستعلامات السابقة ، مثلا إجراء مخزن للاستعلام بواسطة رقم الموظف وآخر بإسمه وو.
أو انشاء (Create) إجراء مخزن جديد من خلال لغة البرمجة به جملة الاستعلام ، ولكن هذه الطريقة ستجهد السيرفر إذا علمنا أن البرنامج سيعمل على شبكة .
حل المشكل يكون بالتالي:
1- جعل البارمتر يقبل القيم الفارغة باسناد Null له ، مثال
@ID INT = NULL
2- في حقول البحث نشرط عليه إذا كان البارمتر فارغ استثني هذا الحقل من البحث والعكس إذا تمت تعبئة البارمتر سيضيف الحقل لمجموعة معايير البحث ، مثال :
Select * From Emp Where (@ID IS Null Or ID=@id)
هذا كل مافي الأمر ،أرجوا أن أكون قد قدمت معلومة مفيدة وجميلة ، والأهم أن يفهم أساساً الحل هذا لماذا.
تحياتي : إبراهيم العبدلي