PDA

View Full Version : انتخاب کوئری بر حسب پارامتر



DataMaster
دوشنبه 02 بهمن 1385, 22:55 عصر
سلام
من بر حسب یه پارامتر می خوام دستور Select از جدول متفاوتی اجرا بشه . اما نمی دونم این حالت رو چطوری پیاده سازی کنم
میخوام یه سری فیلد رو انتخاب کنم که توی همه جدولها مشترک هستن اما بر حسب پارامتر می خوام تز جدول مورد نظر انتحاب بشن
ممنون

zerobit-ltd
دوشنبه 02 بهمن 1385, 23:37 عصر
declare
@Table_Name nvarchar(255),
@Query nvarchar(1000)

set @Table_Name = 'tbl_Students'
set @Query = 'select * from' + space(1) + @Table_Name
exec sp_executesql @Query

darvishiali
دوشنبه 02 بهمن 1385, 23:44 عصر
سلام؛

تا جایی که من میدونم، برای این کار شما فقط میتونید کوئری هاتون رو بصورت Dynamic at Runtime بسازید. (دقیقا عین جمله BOL !)
برای این کار باید کوئری تون رو بصورت یک String بسازید و با sp_executesql اونو اجرا کنید. مثلا نام جدول رو بعنوان پارامتر بصورت یک رشته به یه SP پاس بدین و با کمک اون رشته کوئری تون رو بسازین و اجرا کنین.

ali_kolahdoozan
سه شنبه 03 بهمن 1385, 08:01 صبح
شما با استفاده از sp به سادگی میتونید از درون برنامه پارامتر ارسال کنید

DonetKarvb
سه شنبه 03 بهمن 1385, 09:55 صبح
شما با استفاده از sp به سادگی میتونید از درون برنامه پارامتر ارسال کنید
هر چیزی رو نمیشه به صورت پارامتر ارسال کرد. همانطور که دوستان عزیز لطف فرمودند کد ارائه کردند و توضیح هم دادند گاهی لازم میشه که Daynaim T-SQL استفاده بشه.

iman_s52
سه شنبه 03 بهمن 1385, 10:26 صبح
شما با استفاده از sp به سادگی میتونید از درون برنامه پارامتر ارسال کنید

یه کاراکتر یا عددی رو پاس کن بعد بر اساس اونا Select مورد نظرت رو بنویس.

ehsangfl
پنج شنبه 12 بهمن 1385, 12:02 عصر
یه راه ساده تر که تو vbو c# قابل استفادست ، استفاده از تابع string.format هست
شیوه استفده از این دستور به این شکل:
string.format("select * from tabelname where field1={0} and field2={1} and...",param1,param2,...other)r
این تابع مقدار param1 را در جای {0} قرار می دهدو.....

ali_kolahdoozan
پنج شنبه 12 بهمن 1385, 12:06 عصر
ببینید شما میتونید یک رشته رو بفرستید توی sp و بعد execute کنید . اما این روش رو تا جایی که می تونید انجام ندید . امنیتش کمه و ... / شما یک مثال یطوری که همه بفهمیم بزن . برات یه طوری منطقی حلش میکنیم

AminSobati
پنج شنبه 12 بهمن 1385, 14:56 عصر
در موارد زیادی، نیاز به Dynamic TSQL ناشی از یک راه حل اشتباه هستش، ولی مواردی که Dynamic TSQL تنها راه حلش باشه هم وجود دارند و همیشه از اشتباه سرچشمه نمیگیره. لذا من هم نظرم اینه که دوست عزیزمون اصل مشکل رو توضیح بدن که ببینیم آیا روش بهتری هست یا خیر