PDA

View Full Version : دلیل بروز این خطا در زمان Order By چیست؟



bardia goharbin
شنبه 11 آبان 1387, 14:33 عصر
در سطرهایی که به رنگ قرمز است خطای زیر دریافت میشود.

Conversion failed when converting the nvarchar value 'علی مرادی' to data type int.

اگر Order By را بصورت Case استفاده نکنم این مشکل وجود ندارد.
به نظر شما دلیل این مشکل و راه حلش چیست؟




ALTER PROCEDURE dbo.sp_Full_SelectAll
@Order_By Tinyint
AS

Select * From (
.
.
.
.
.
.
.
.
) TblNew
Order by CASE
WHEN @Order_By=1 THEN TblNew.FName
WHEN @Order_By=2 THEN TblNew.Coding
WHEN @Order_By=6 THEN TblNew.MahalKhedmat
WHEN @Order_By=7 THEN TblNew.EducationID
WHEN @Order_By=10 THEN TblNew.TaholID
End

MajerajooyeKhallagh
شنبه 11 آبان 1387, 16:37 عصر
دوست عزیز,کد خود را به صورت زیر تصحیح بفرمایید دیگر این خطا را نخواهید داشت:



Select * From (
.
.
.
.
.
.
.
.
) TblNew
Order by
CASE @Order_By WHEN 1 THEN TblNew.FName ELSE NULL END,
CASE @Order_By WHEN 2 THEN TblNew.Coding ELSE NULL END,
CASE @Order_By WHEN 6 THEN TblNew.MahalKhedmat ELSE NULL END,
CASE @Order_By WHEN 7 THEN TblNew.EducationID ELSE NULL END,
CASE @Order_By WHEN 10 THEN TblNew.TaholID ELSE NULL END

bardia goharbin
شنبه 11 آبان 1387, 17:03 عصر
ترفند جالبی بود.
شما به جای یک Case از چند Case استفاده کرده اید، که مشکل را حل میکند.
ولی دلیل بروز خطا در کد من را توضیح ندادید. آیا اشکال از کد من است یا Sql2005 مشکل دارد.
کد من از لحاظ دستوری غلط نیست ولی اگر میدانید چرا آن خطا در کد من بوجود می آید بگویید.

MajerajooyeKhallagh
شنبه 11 آبان 1387, 17:30 عصر
دوست عزیز لطفا نگاهی به لینک زیر از MSDN بیاندازید:
ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/tsqlref9/html/658039ec-8dc2-4251-bc82-30ea23708cee.htm

کد شما ایراد دارد