PDA

View Full Version : ارسال پارامتر هاي اختياري optional parameters از داخل برنامه asp.net به اس كيو ال



kohyar
دوشنبه 02 شهریور 1388, 00:21 صبح
سلام دوستان
من مي خوام از داخل برنامه asp.net بتونم به Stored Procedure اس كيو ال پارامتر اختياري بفرستم
يعني اگر سه پارامتر بايد به پروسيجر test تو اس كيو ال بفرستم اگر كاربر دو تا مقدار دهي كرد و يكي را خالي ارسال كرد اون پارامتر ناديده گرفته بشه
اينم كد sp:



CREATE PROCEDURE test
@name varchar(50)=NULL,
@family varchar(50)=NULL,
@telnum varchar(10)=NULL
AS
select * from tel
WHERE
((@name is NULL) OR (name = @name)) AND
((@family is NULL) OR (family = @family)) AND
((@telnum is NULL) OR (telnum = @telnum))
GO


و اينم تكه كد دات نت



SqlConnection cnn = new SqlConnection("Data Source=.; Initial Catalog=phone;User Id=sa; Password=;");
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cmd.CommandText = "test";
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@name", SqlDbType.VarChar, 50);
cmd.Parameters[0].Value = txtname.Text;
cmd.Parameters.Add("@family", SqlDbType.VarChar, 50);
cmd.Parameters[1].Value = txtfamily.Text;
cmd.Parameters.Add("@telnum", SqlDbType.VarChar, 10);
cmd.Parameters[2].Value = txttelnum.Text;
SqlDataAdapter da = new SqlDataAdapter();
DataTable tbl = new DataTable();
da.SelectCommand=cmd;
da.Fill(tbl);
GridView1.DataSource = tbl;
GridView1.DataBind();



تو اجراي برنامه اگر يكي از پارامتر هاي نام يا فاميلي يا شماره تلفن رو وارد نكنم
هيچ نتيجه اي رو نشون نميده در حاليكه من مي خوام پارامتر وارد نشده ناديده گرفته بشه

kiosksoft
دوشنبه 02 شهریور 1388, 09:06 صبح
دوست عزیز

در در پروسیجر اس کیو ال به این شیوه عمل کنید :



@name varchar(50)='',

barnamenevi
سه شنبه 17 شهریور 1388, 15:17 عصر
سلام
لطفا این تاپیک را ببینید.
ممنون

http://barnamenevis.org/forum/showthread.php?t=145236

iman_ad
سه شنبه 17 شهریور 1388, 18:13 عصر
یک شرط بگذار اگه مقدار دهی نشد null بفرسته