csharpcollegian
شنبه 22 اسفند 1394, 17:55 عصر
سلام وقت به خیر
دوستان من برای پیاده سازی یک جستجوی ترکیبی روی یکی از جداول دیتابیسم از Stored Procedure زیر استفاده کردم :
CREATE PROCEDURE procPersonnelSearch
@ID int = Null,
@Name nvarchar(50) = Null,
@StartDate datetime = Null,
@EndDate datetime = Null,
AS
BEGIN
Select * From tblPersonnel
Where ID = ISNULL(@ID, ID)
AND Name = ISNULL(@Name, Name)
AND StartDate = ISNULL(@StartDate, StartDate)
And EndDate = ISNULL(@EndDate, EndDate)
END
GO
این Stored Procedure بر اساس متغیرهایی که براش تعریف کردم (مثل نام کارمند، کد پرسنلی کارمند و...) جدولم رو جستجو می کنه و نتیجه مناسب رو برمی گردونه
دلیل اینکه از ISNULL استفاده کردم اینه که بتونم جستجو رو به صورت ترکیبی (چند کلید) هم پیاده سازی کنم
Stored Procedure به خوبی کار می کنه و فقط کافیه متغیر یا متغیرهایی که می خوام بر اساس اونا جستجو انجام بشه رو براش ارسال کنم تا نتیجه رو برگردونه
اما مشکل اینجاست که زمانی که مقدار یکی از پارامتر ها در جدول مربوطش NULL باشه هیچ نتیجه ای رو بر نمیگردونه !
مثلا وقتی مقدار EndDate (تاریخ پایان قرارداد کارمند) در جدول کارمند NULL باشه کد بالا کار نمی کنه !
میخواستم بدونم از چه تکنیک یا تابعی باید استفاده کنم تا در این حالت خاص هم جواب بده ؟
خیلی ممنون
دوستان من برای پیاده سازی یک جستجوی ترکیبی روی یکی از جداول دیتابیسم از Stored Procedure زیر استفاده کردم :
CREATE PROCEDURE procPersonnelSearch
@ID int = Null,
@Name nvarchar(50) = Null,
@StartDate datetime = Null,
@EndDate datetime = Null,
AS
BEGIN
Select * From tblPersonnel
Where ID = ISNULL(@ID, ID)
AND Name = ISNULL(@Name, Name)
AND StartDate = ISNULL(@StartDate, StartDate)
And EndDate = ISNULL(@EndDate, EndDate)
END
GO
این Stored Procedure بر اساس متغیرهایی که براش تعریف کردم (مثل نام کارمند، کد پرسنلی کارمند و...) جدولم رو جستجو می کنه و نتیجه مناسب رو برمی گردونه
دلیل اینکه از ISNULL استفاده کردم اینه که بتونم جستجو رو به صورت ترکیبی (چند کلید) هم پیاده سازی کنم
Stored Procedure به خوبی کار می کنه و فقط کافیه متغیر یا متغیرهایی که می خوام بر اساس اونا جستجو انجام بشه رو براش ارسال کنم تا نتیجه رو برگردونه
اما مشکل اینجاست که زمانی که مقدار یکی از پارامتر ها در جدول مربوطش NULL باشه هیچ نتیجه ای رو بر نمیگردونه !
مثلا وقتی مقدار EndDate (تاریخ پایان قرارداد کارمند) در جدول کارمند NULL باشه کد بالا کار نمی کنه !
میخواستم بدونم از چه تکنیک یا تابعی باید استفاده کنم تا در این حالت خاص هم جواب بده ؟
خیلی ممنون