PDA

View Full Version : تعریف متغیر local از نوع ntext



saffari2005
سه شنبه 03 خرداد 1384, 12:23 عصر
سلام

در یک stored proc اجازه تعریف ntext data type نمیده!
چطور میشه این مشکلو حل کرد؟

AminSobati
چهارشنبه 04 خرداد 1384, 14:24 عصر
دوست عزیزیم،
مطمئن هستین که میخواین 1 گیگا بایت متن رو در RAM نگه دارین؟!!

saffari2005
چهارشنبه 04 خرداد 1384, 17:01 عصر
گل گفتین! :wink:
اما یکی این مطلب رو به طراح پروژه ما بگه! :sunglass:

saffari2005
پنج شنبه 05 خرداد 1384, 13:28 عصر
حال در هر صورت چرا کار نمی کنه؟
من کدی به این شکل دارم:


Update #Info set DescTmp = (SELECT Description FROM RDAdmin.Opinions WHERE OpinID =
( SELECT OpinID FROM RDAdmin.RD_User_Opin WHERE RDID = @RDId ) )

که در آن DescTmp یک فیلد از نوع ntext از یک جدول مجازی است.
اما زمان اجرا این error رو می گیرم:


The text, ntext, and image data types are invalid in this subquery or aggregate expression.

AminSobati
جمعه 06 خرداد 1384, 08:51 صبح
برای ویرایش فیلدهای nText و text باید از UPDATETEXT استفاده کنین که در این مورد مطالب خوبی ارسال شده:
http://www.barnamenevis.org/forum/viewtopic.php?t=15914

saffari2005
شنبه 07 خرداد 1384, 11:54 صبح
ممنون از لینکی که دادین اما من باید فیلدی که می خوام update کنم در یک متغیر از نوع ntext بریزم چون همون طور که در نمونه کد قبلی نشون دادم , این مقدار نتیجه یک query است لذا مستقیم نمی تونم اونو با updatetext به کار ببرم .مشکل همین جا شروع میشه که اجازه تعریف متغیری از نوع ntext به صورت local را نمی دهد.


DECALRE @DescriptionTmp ntext
set @DescriptionTmp =(SELECT Description FROM RDAdmin.Opinions WHERE OpinID =
( SELECT OpinID FROM RDAdmin.RD_User_Opin WHERE RDID = @RDId ) )

با اجرای کد فوق مشکل دارم چون خطا میده:



ADO Error : the text, netxt and image data types are invalid for local variables!

حال به نظر شما از چه روشی برای پر کردن این متغیر میتونم استفاده کنم؟ :گیج:

AminSobati
شنبه 07 خرداد 1384, 22:26 عصر
همونطور که پیغام نشون میده، یک متغیر رو از جنسهای Text,nText,Image نمیشه تعریف کرد.
روش کار برای هدف شما اینه که آدرس سورس رو هم بخونین و مستقیما به SQL Server بگین که اطلاعات رو از کجا به کجا کپی کنه:

DECLARE @MyPointer BINARY(16)
DECLARE @MyPointer2 BINARY(16)

--adrse fildi ke bayad update beshe:
SELECT @MyPointer = TEXTPTR(DescTmp) FROM #Info where id=...

--adrse fildi ke be onvane source be kar mire
SELECT @MyPointer2 = TEXTPTR(Description ) FROM RDAdmin.Opinions WHERE OpinID =...

UPDATETEXT #Info.DescTmp @MyPointer 0 0 RDAdmin.Opinions.Description @MyPointer2

saffari2005
یک شنبه 08 خرداد 1384, 07:34 صبح
ممنون! :موفق: