PDA

View Full Version : رفع اشکال یک رویه ذخیره شده



iroonidotnet
یک شنبه 02 فروردین 1388, 20:16 عصر
با سلام. در رویه زیر اگر نوع پارامتر FN برابر nvarchar گرفته بشه مشکلی نیست . ولی من به دلیلی مجبورم نوع فیلد FName رو Text بگیرم پس باید پارامتر FN هم text بگیرم ولی خطای زیر رو میده

invalid operator for data type ,operator equals add,type equals text


Create Procedure sp_Tbl_test_SelectRow
@FN text
As
Begin
Select
Code,
FName
From Tbl_test
Where FName like '%'+@FN
End
بنده رو راهنمایی کنید که چطور برای یک فیلد نوع textهمچین رویه ای بنویسم
ممنون

AminSobati
یک شنبه 02 فروردین 1388, 20:54 عصر
سلام،
در نسخه 2005 و بالاتر میتونین nvarchar max استفاده کنین

siavash_realy
یک شنبه 02 فروردین 1388, 23:32 عصر
سلام شما ميتونيد ورودي رو از جنس text بگيريد (چون ميگيد مجبوريد، اما نميدونم اين اجبار چرا وجود داره) و در تابعتون بجاي استفاده مستقيم از متغير @FN با تابع CAST جنس متغير رو درون تابع به nvarchar تغيير بدين فكر كنم اينطوري مشكلتون مرتفع شه، محض احتياط syntax دستور رو واستون مينويسم :

Create Procedure sp_Tbl_test_SelectRow
@FN text
As
Begin
Select
Code,
FName
From Tbl_test
Where FName like '%'+ CAST(@FName AS nvarchar)
End

iroonidotnet
دوشنبه 03 فروردین 1388, 00:41 صبح
دوست عزیز ممنون . من قبل از اینکه از رویه ها استفاده کنم در جستجو با حرف ی مشکل داشتم و اسه رفع این مشکل فیلد هام رو از نوع Text می گرفتم که این مشکل رو حل میکرد و حالا هم میخوام همون جستجو رو در رویه داشته باشم. که با این مشکل مواجه شدم. حالا با این توضیح اگر زحمتی نیست منو بیشتر راهنمایی کنید. ضمنا از این که CASTرو ازتون یاد گرفتم ممنون هستم

siavash_realy
دوشنبه 03 فروردین 1388, 23:08 عصر
خواهش ميكنم، تا جايي كه من تجربه كردم منشا مشكل حرف ي استفاده ار unicode هاي ناهمسان بين Databse و Client‌هستش ، معمولا دو جور ي توي پايگاه ها ذخيره ميشن يكي زيرش 2تا نقطه داره كه عربي هست و ديگري بدون نقطه هست كه فارسي هستش و معمولا اين موضوع منشا دردسر تو جستجو ها ميشه، من واسه اينكه مشكل رو منطقا حل كنم معمولا تنظيمات Collation مربوط به Database ام رو روي Arabic_CI_AS ميگذارم (البته در ورژن Sql 2008 ، فارسي هم اضافه شده) و واسه client هام يك اسكريپت رو اجرا ميكنم كه تنظيمات زبان سيستم عامل كاربر رو به يونيكد فارسي تبديل ميكنه ، اين اسكريپت كاري رو كه به صورت دستي و به شرح ذيل ميگم رو انجام ميده :
1- تو كنترل پنل منوي Regional and language options رو باز ميكنيد
2- برگه Advanced رو انتخاب ميكنيد
3- از Combo مربوطه گزينه فارسي رو انتخاب ميكنيد
4- گزينه Apply all setings... رو علامت ميزنيد و همه چيز رو ok ميكنيد

اينطوري همه كاربران با يك يونيكد يكسان اطلاعات رو Read و Write ميكنن و مشكلي پيش نمياد و ديگه احتياجي به اين نيست كه خودتوتن رو محدود به نوع داده Text بكنيد.

babak2000
دوشنبه 21 اردیبهشت 1388, 17:09 عصر
موقع نصب برنامه می تونید فایل کیبورد فارسی شده صحیح را کپی کنید تا به مشکل برخورد نکنید

البته بعضی از ویندوزها --اکثرآ فارسی شده -- بیشتر این مشکل را دارند :متعجب: از فونت عربی استفاده کردند

و حتی با مراجعه به کنترل پنل و زیر قسمت Regional and language options و اعمال تغییر بازهم مشکل

باقی خواهد ماند و بهترین راه بنظرم همونی هست که گفتم