PDA

View Full Version : پاس دادن پارامتر به Store Procedure



سلماس
جمعه 01 مهر 1384, 11:05 صبح
یک جدول دارم با نام table1 وقتی میخوام که از طریق Sqlcommand یک پاامتر بهش بدم با روش پائین خطا میگیره




SQLCMD.Parameters.Add("table1", SqlDbType.NVarChar)
SQLCMD.Parameters.Add("table_name = 'table1'")
SQLCMD.Parameters.Add("table_name = table1")
SQLCMD.Parameters.Add("@table_name =table1" )
SQLCMD.Parameters.Add("table_name = @'table1'")


روش درستش چطور باید باشه .
البته اگر یک نوع از Parameter تعریف کنم و مقدار دهی کنم و اونو پاس بدم به sqlcommand مشکلی نداره
اما این روش بالا طریقه درستش رو کسی بلده.

Hamedm
جمعه 01 مهر 1384, 12:09 عصر
CommandSQL.Parameters.Add(ParameterName, value)

asilverisis
جمعه 01 مهر 1384, 12:19 عصر
سلام

با احترام به آقا حامد

یه راه مطمئن اینه




sqlCmd.Parameters.Add(New SqlParameter(ParamName, SqlDbType.NVarChar, 50, FieldName))




توی کار با StoredProcedure چند نکته رو باید رعایت کنی

نام پارامتر( ParamName) باید با نام پارامتر توی StoredProcedure مطابقت داشته باشه

اگر مقدار پارامتر برای شرط استفاده نمی شه بهتره در آخر نام فیلد متناظر نوشته بشه ( FieldName)

سلماس
جمعه 01 مهر 1384, 13:20 عصر
اقا حامد فکر کنم روش شما اشتباه باشه چون کامپایلر خطا میگیره و روش دوستمون


sqlCmd.Parameters.Add(New SqlParameter(ParamName, SqlDbType.NVarChar, 50, FieldName))

درسته ولی باز هم این طریقی از تعریف یک متغییر از نوع پارامتر هست که من نمیخوام این کار صورت بگیره در
حالی که میشه پارامتر رو مستقیما پاس داد.
در اینجا table_name اسم پارامتر من هست و table1 مقداری که باید به اون نسبت داده بشه
اما به هیج راهی مستقیم نیست
نکته اینکه من از VS2005 استفاده میکنم و ممکنه در روش پاس دادن پارامتر با روش آقای محمدی فرق میکنه و مشکل پیش میاد
کسی نکته ایی به ذهنش نمیرسه ؟

بابک زواری
جمعه 01 مهر 1384, 14:14 عصر
شما با دستور Parameters.Add یک پارامتر اضافه میکنید در حقیقت کاری که با NEW انجام میدهید
به مثال زیر توجه کنید در حقیقت کد شما بایست به شکل زیر تغییر کند



SQLCMD.Parameters.Add("@table_name", SqlDbType.NVarChar)

SQLCMD.Parameters("@table_name").Value = "table1"

Hamedm
جمعه 01 مهر 1384, 15:03 عصر
شما با دستور Parameters.Add یک پارامتر اضافه میکنید در حقیقت کاری که با NEW انجام میدهید
به مثال زیر توجه کنید در حقیقت کد شما بایست به شکل زیر تغییر کند



SQLCMD.Parameters.Add("@table_name", SqlDbType.NVarChar)

SQLCMD.Parameters("@table_name").Value = "table1"


سلام

بله کد آقای زواری درسته.

از بابت پست بالا ببخشید اشتباهی بجای CommandSQL.Parameter دستور CommandSQLParameter.Add رو تایپ کردم.
آقای سلماس من فکر کردم شما میدونید که قبل از اسم پارامتر باید @ بیاد. بخاطر همین در پست بالا ذکر نکردم.


شما با دستور Parameters.Add یک پارامتر اضافه میکنید در حقیقت کاری که با NEW انجام میدهی
[/CODE]
جناب زواری مگه پارامترهای SP ثابت نیست؟ پس New کردن پارامتر، چه معنی داره؟

در پناه حق موفق باشید و پرتوان

بابک زواری
شنبه 02 مهر 1384, 08:56 صبح
منظورم اینکه وقتی با دستور NEW یک پارامتر در VS تعریف میکنید اینجا هم با دستور ADDهمین کار رو میکنید ؛
منظورم توی SP نیست .

asilverisis
شنبه 02 مهر 1384, 22:01 عصر
با سلا به دوستان
من فکر می کنم چه از New استفاده بشه یا نشه فرقی نمی کنه
متد Add اگر یک پارامتر New شده بهش ارسال بشه اون رو به صورت Refrence توی لیست پارامترها قرار می ده

اگر هم استفاده نشه ابتدا با Property های ارسال شده یک پارامتر می سازه و دوباره همون کار رو می کنه

راهی که من گفتم راه پیشنهادی خود Microsoft هستش