PDA

View Full Version : پاس دادن متغیر به استور پروسیجر بدون کوتیشن



bbc_sh
چهارشنبه 03 مهر 1387, 21:04 عصر
سلام دوستان
این کدی که من نوشتم یه سرس رشته رو تو پایگاه داده ذخیره میکنه بوسسیله storeprocedure.
ولی رشته ها با کوتیشت اطرافشون ذخیره میشن مثل: 'bbc' ولی من میخوام بدون کوتیشن تو پایگاه داده ذخیره بشه ولی نمیدونم چه طوری باید storeprocedure رو تغییر بدم

for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
Label pid = (Label)GridView1.Rows[i].FindControl("label1");
Label qty = (Label)GridView1.Rows[i].FindControl("label3");


cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "set_order";
string dd = pid.Text.Trim();
string strlist;
strlist = "'" + dd + "'";

cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@product_id", strlist);
cmd.Parameters.AddWithValue("@cu_username", Session["user"].ToString());
cmd.Parameters.AddWithValue("@qty", qty.Text.Trim());
cmd.Parameters.AddWithValue("@date", DateTime.Now.ToLocalTime());
cmd.ExecuteNonQuery();


}-------------------------

ALTER PROCEDURE set_order
@product_id char(10),
@cu_username varchar(50),
@qty char(50),
@date nvarchar(50)
AS
declare @cu_id int

select @cu_id=customer_id from customer where cu_username=@cu_username;

insert into cu_order (product_id,quantity,customer_id,order_date)values (@product_id,@qty,@cu_id,@date);

declare @nqty varchar(1024)
set @nqty='update product_details set available_now=available_now-'+@qty+'where product_id='+@product_id;
exec (@nqty)
RETURN

salehbagheri
چهارشنبه 03 مهر 1387, 22:00 عصر
ولی رشته ها با کوتیشت اطرافشون ذخیره میشن مثل: 'bbc' ولی من میخوام بدون کوتیشن تو پایگاه داده ذخیره بشه ولی نمیدونم

شما که خودتون متغیرها رو داخل کوتیشن میذارید!!!!؟!؟!؟!؟!؟



...
string strlist;
strlist = "'" + dd + "'";

cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@product_id", strlist);
...

bbc_sh
چهارشنبه 03 مهر 1387, 23:39 عصر
خوب اگه واسه متغیرها کوتیشن نذارم نمیتونم از این استور پروسیجر استفاده کنم.چون که مثلا اگه بخواد m12 ذخیره بشه و کوتیشن هم نذارم میگه که 'invalid column name 'm12' واسه همین مجبور شدم کوتیشن بذارم وبا همین کوتیشن هم ذخیره میشه و بعدا اگه بخوام از این ها استفاده کنم و با مقدار اصلی مقایسه کنم نمیشه چون اصلی ها کوتیشن ندارن ولی اینا دارن.این متغیرها یه آیدی هستن.

SMRAH1
پنج شنبه 04 مهر 1387, 02:26 صبح
مطمئنی این پیغام خطا رو می ده.من هم با آقای باقری موافقم.وقتی به پارامتر product_id مقدار 'm12' رو نسبت می دی ......

bbc_sh
پنج شنبه 04 مهر 1387, 08:38 صبح
آره.ولی وقتی کوتیشن میذارم درست میشه.