PDA

View Full Version : بازیابی تعداد خاصی از سطر ها از طریق یک array؟؟



Behsharp
سه شنبه 05 اردیبهشت 1385, 15:55 عصر
سلام
من میخوام یک مجمعه از سطر ها را که id آنها در یک array ذخیره شده را بازیابی کنم
و مقادیر این array ثایت نیستد یعنی در طول برنامه ممکنه تغییر کنند. در واقع یک چنین دستوری مد نظرم هست select * from tablename where id=arrayname
که البته این دستور غلط هست
اگه کسی بتونه راهنمایی کنه ممنون میشم

AminSobati
سه شنبه 05 اردیبهشت 1385, 23:04 عصر
خود Array قابل ارسال به SQL Server نیست مگر اینکه مثل یک لیست اونها رو مثلا با کاراکتر خاصی جدا کنید و ارسال کنید(به عنوان یک رشته). مثال:
4,5,54,71,9,43,65
حالا در SP میتونین اینها رو وارد یک Table Variable کنید و این رو با جدول اصلی Join کنید.

Kamyar.Kimiyabeigi
چهارشنبه 06 اردیبهشت 1385, 10:00 صبح
با اجازه آقای ثباتی
شما میتونین از Dynamic TSql هم استفاده کنین
مثال :


CREATE PROCEDURE DySelect @Code VARCHAR(100)
AS
EXECUTE('SELECT * FROM TABLENAME WHERE Code IN (' + @Code + ')')
GO

Behsharp
چهارشنبه 06 اردیبهشت 1385, 12:36 عصر
ممنون دوستان
راهنمایی خیلی خوبی بود

AminSobati
چهارشنبه 06 اردیبهشت 1385, 13:03 عصر
کامیار جان من این روش رو پیشنهاد نکردم به دلیل اینکه IN به چندین OR تبدیل میشه. مثلا اگر رشته شما 20 آیتم داشته باشه، 20 تا OR خواهید داشت. این رو میتونین در Exec Plan ببینین. وجود OR باعث انتخاب یک Plan ناکارآمد میشه (مثلا Table Scan) در حالیکه روش Join از الگوریتمهای بسیار خوبی استفاده میکنه

Kamyar.Kimiyabeigi
چهارشنبه 06 اردیبهشت 1385, 13:35 عصر
کامیار جان من این روش رو پیشنهاد نکردم به دلیل اینکه IN به چندین OR تبدیل میشه. مثلا اگر رشته شما 20 آیتم داشته باشه، 20 تا OR خواهید داشت. این رو میتونین در Exec Plan ببینین. وجود OR باعث انتخاب یک Plan ناکارآمد میشه (مثلا Table Scan) در حالیکه روش Join از الگوریتمهای بسیار خوبی استفاده میکنه
ممنون آقای ثباتی :تشویق:
من نمی دونستم :گریه: