PDA

View Full Version : سوال: مشکل در فراخوانی stored procedure



zahra.mf
دوشنبه 30 مرداد 1391, 20:40 عصر
سلام من یه sp نوشتم که مقدار max کلید اصلی یه جدول و پیدا کنه


ALTER PROCEDURE dbo.[find_fid]

AS
Begin
select max(faktor_forush_ID) from [faktor forush moshtari]

RETURN
End


بعد توی برنامه میریزمش توی یه متغیر و توی یه جدول دیگه insert میکنم


SqlCommand cmd = new SqlCommand();
string srtcmd = "EXECUTE [dbo].[find_fid]";
cmd.CommandText = srtcmd;
sql1 = @"insert into shamelforush (faktor_forush_ID,kala_ID,namek,gheymatkala)
values ({0},{1},N'{2}',N'{3}')";
sql1 = string.Format(sql1,srtcmd,id,
(textBox10.Text.Replace("'", "''")),
(textBox11.Text.Replace("'", "''"))
);


ولی داره به فراخوانی تو برنامه اشکال میگیره نمیدونم مشکل چیه

ali.bahrami
دوشنبه 30 مرداد 1391, 20:49 عصر
سلام دوست عزیز .
برای استفاده از stored procedure در سی شارپ باید خاصیت commandType را برابر با stored procedure قرار بدید و نیازی هم به نوشتن Execute نیست فقط نام رویه را قرار بدین کافیه

ali.bahrami
دوشنبه 30 مرداد 1391, 20:50 عصر
SqlCommand cmd = new SqlCommand();
cmd.CommandType = commandType.storedProcedure;
cmd.CommandText = نام رویه ذخیره شده

zahra.mf
دوشنبه 30 مرداد 1391, 21:01 عصر
SqlCommand cmd = new SqlCommand();
cmd.CommandType = commandType.storedProcedure;
cmd.CommandText = نام رویه ذخیره شده

میخوام خروجی sp و وارد یه جدول دیگه کنم (insert کنم تو یه جدول دیگه) باید بریزمش توی یه متغیر خروجی رو که بتونم استفاده کنم

اسم رویه رو باید بذارم تو ""؟
چجور بنویسم؟؟؟

ali.bahrami
دوشنبه 30 مرداد 1391, 22:26 عصر
اره دوست عزیز شما باید نام رویه ذخیره شده را داخل علامت " " قرار دهید

zahra.mf
دوشنبه 30 مرداد 1391, 23:24 عصر
اره دوست عزیز شما باید نام رویه ذخیره شده را داخل علامت " " قرار دهید

من اینجوری نوشتمش ولی فایده نداره

SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
string srtcmd = cmd.CommandText = "[dbo].[find_fid]";
sql1 = @"insert into shamelforush (faktor_forush_ID,kala_ID,namek,gheymatkala)
values ({0},{1},N'{2}',N'{3}')";
sql1 = string.Format(sql1,srtcmd,id,
(textBox10.Text.Replace("'", "''")),
(textBox11.Text.Replace("'", "''"))
);

این errore و میگیره
The multi-part identifier "dbo.find_fid" could not be bound.

ali_habibi1384
سه شنبه 31 مرداد 1391, 13:43 عصر
مقدار برگشتي از SP بصورت object برميگرده. بعد از اينكه مقدار رو دريافت كرديد به string يا int تبديل كنيد

ali_habibi1384
سه شنبه 31 مرداد 1391, 16:23 عصر
كانكشن رو هم توي cmd نريختي


cmd.Connection = con;