raika17metal
شنبه 29 مرداد 1390, 19:32 عصر
با سلام.
من این Stored Procedure رو طراحی کردم. اما به یه مشکل کوچیک برخورد کردم، برای مقادیری مثل : fyear و ... مقدار پیش فرض NULL در نظر گرفته شده اما از اونجایی که از نوع int هستش زمانی که در سی شارپ پارامتر ارسال نشه مقدار ارسال میشه نه NULL !!!!!!! چی کار کنم که در صورتی که مقدار پارامتر ارسالی عدد 0 بود به جاش NULL در نظر گرفته بشه؟؟؟
CREATE PROCEDURE Student_Report_test
@firstname nvarchar(20)=NULL,
@lastname nvarchar(30)=NULL,
@gender bit = NULL,
@fyear int = NULL,
@fmonth int = NULL,
@fday int = NULL,
@tyear int =NULL,
@tmonth int = NULL,
@tday int = NULL,
@nationalcode nvarchar(10) = NULL
AS
BEGIN
SELECT FirstName,LastName,FatherName,StSex,BirthYear,Birt hMonth,BirthDay,NationalCode,PhoneNumber,CellPhone ,Grade,Email,Address
FROM tblstudents
WHERE FirstName=COALESCE(@firstname,FirstName) AND
LastName=COALESCE(@lastname,LastName)AND
StSex=COALESCE(@gender,StSex) AND
BirthYear >= COALESCE(@fyear,BirthYear) AND BirthYear <= COALESCE(@tyear,BirthYear)AND
BirthMonth >= COALESCE(@fmonth,BirthMonth) AND BirthMonth<=COALESCE(@tmonth,BirthMonth)AND
if(NationalCode <> 0)
NationalCode = COALESCE(@nationalcode,NationalCode)
END
من این Stored Procedure رو طراحی کردم. اما به یه مشکل کوچیک برخورد کردم، برای مقادیری مثل : fyear و ... مقدار پیش فرض NULL در نظر گرفته شده اما از اونجایی که از نوع int هستش زمانی که در سی شارپ پارامتر ارسال نشه مقدار ارسال میشه نه NULL !!!!!!! چی کار کنم که در صورتی که مقدار پارامتر ارسالی عدد 0 بود به جاش NULL در نظر گرفته بشه؟؟؟
CREATE PROCEDURE Student_Report_test
@firstname nvarchar(20)=NULL,
@lastname nvarchar(30)=NULL,
@gender bit = NULL,
@fyear int = NULL,
@fmonth int = NULL,
@fday int = NULL,
@tyear int =NULL,
@tmonth int = NULL,
@tday int = NULL,
@nationalcode nvarchar(10) = NULL
AS
BEGIN
SELECT FirstName,LastName,FatherName,StSex,BirthYear,Birt hMonth,BirthDay,NationalCode,PhoneNumber,CellPhone ,Grade,Email,Address
FROM tblstudents
WHERE FirstName=COALESCE(@firstname,FirstName) AND
LastName=COALESCE(@lastname,LastName)AND
StSex=COALESCE(@gender,StSex) AND
BirthYear >= COALESCE(@fyear,BirthYear) AND BirthYear <= COALESCE(@tyear,BirthYear)AND
BirthMonth >= COALESCE(@fmonth,BirthMonth) AND BirthMonth<=COALESCE(@tmonth,BirthMonth)AND
if(NationalCode <> 0)
NationalCode = COALESCE(@nationalcode,NationalCode)
END