PDA

View Full Version : چگونه می توان متغیرهای را به متغیرهای T-SQL پاس داد



منصور بزرگمهر
سه شنبه 23 تیر 1388, 04:40 صبح
فرض می کنیم در T-SQL برنامه SQL Server ما چندین متغیر تعریف کرده ایم

Variable1@
Variable2@

و قس علی هذا

حال چگونه می توان به این متغیرهای ما متغیرهای از وی بی یا سی شارپ انتقال داد.

متشکرم - بزرگمهر

Galestian
سه شنبه 23 تیر 1388, 08:13 صبح
سلام


Dim cmd As New System.Data.SqlClient.SqlCommand
cmd.Connection = connstr
cmd.CommandType = Data.CommandType.Text
cmd.CommandText = "select * from Table where ID1=@Variable1 and ID2=@Variable2"
cmd.Parameters.Add("@Variable1", Data.SqlDbType.Int).Value = 1 'your value
cmd.Parameters.Add("@Variable2", Data.SqlDbType.Int).Value = 2 'your value
conn.Open()
cmd.ExecuteNonQuery()
conn.close()

منصور بزرگمهر
سه شنبه 23 تیر 1388, 17:09 عصر
دوست عزیز متشکرم از جوابت.
ولی من هنوز مشکل دارم، من هنوز با دستورات ADO.Net آشنا نیستم، و سئوال من اینجاست، آیا تمام دستورات T-SQL (تاکید من بر تمام آنهاست) نظیر ساخت دیتا بیس، ساخت یوزر، و غیره و غیره و غیره که ما بصورت دسته ای و یا حتی چند دسته که با
دستور Go ایجاد می کنیم، می توانیم تمامی آنها را در متغیر متنی بالا قرار داد، و به SQL Server فرستاد، و با توضیح
بالای شما بشود، حال متغیرهائی را نیز فرستاد،
و البته باید بگویم، من به ADO کلاسیک آشنائی کامل دارم، و دستور اکسس را در آن انجام می دهم، ولی بخاطر اینکه به تازگی به SQL Server مهاجرت کرده ام، و در آینده ای نزدیک باید ADO.Net را نیز بخوانم، می خاستم بدانم، موارد فوق امکان پذیر است، یا خیر. البته قسمت دیگری نیز جالب است، آیا می توان متغیری را از SQL Server به برنامه پاس داد، و نه از برنامه به SQL Server و چگونه.

در آخر در امضایتان نوشته اید، "چرا ما برنامه نویس ها فکر می کنیم مخی هستیم !"، من معتقدم، نتنها مخی هستیم، که مسلم است، بلکه با اینهمه کدها و مفاهیم عجیب غریب و رنگارنگ، و هر روز نیز عوض می شود، ما باز آنها را دنبال می کنیم، و برای مثال من روز اول وی بی می دانستم، بتدریج در اکسس و اکسل
کامل شدم، ADO بعد در وی بی دات نت استاد شدم، (با کلاسهای جور وار و ورود کدهای عجیب غریب،
بعد تصمیم گرفتم SQL Server بخوانم، و حال در سطح متوسط آن را می دانم، و دارم تمرین بیشتر می کنم، برای ADO.NET به C# نیاز داریم، پس دارم به این سین تکس مهاجرت می کنم، آینده نزدیک باید به ADO.Net پناه ببرم، حال این میان باید ویندوز ادمین خوب بدانم، شبکه خوب بدانم، آینده نزدیک باید کریستال ریپورت دات نت بخوانم، (کتاب انگلیسی)، قدیم HTML, CSS, ASP می دانستم، حال فراموش باید دوره و بعد برای بازار کار هم که شده، ASP.Net باید بخوانم، کتاب Linq خریده ام باید آنرا بخوانم، جدیداً به خارج مهاجرت کرده ام، باید انگلیسیم Prefect باشد، لیسانس حسابداری دارم، و تجربه ایجاد نرم افزار حسابداری، در آینده نیز در شرکتهای بزرگ این زمینه را باید دنبال کنم، زن بچه، (الحمدالله راحتیم نداریم) ولی فعلاً کار درست ندارم، و هزار بدبختی تازه مهاجر و کلاً زندگی با مشکلات فراوان، اگر نرم افزارهائیکه گفتم اگر درش بخواهی کامل شوی، خودش یک دنیا کار است، خدا بداد برسه، ماکروسافت دلش به تنگ بیاید، و یک زبان جدید بیرون بدهد، کار همه با خدا است، من مطمئنم تو همه نظیر من همین مشکلات را داری، پس تو و من نیز مخ نیستیم، تو اینهمه اطلاعات را با کار سبزی فروشی و درآمد ان مقایسه کن، والا آنها بیشتر درآمد دارند، ولی ما چه دل و مخ عجیب غریب داریم خدا می داند، (اینجا در خارج هم همین طور است، بیزینس بیشتر درآمد دارد) آن سبزی فروش برای کل اطلاعات تو یک کیلو هم خیار نمی دهد. و همه اطلاعات تو در کاغذ پاکت او جا دارد، ما چه امیدی با اینهمه مشکلات جور وا جور داریم، خدا عالمه، باز بگو ما مخ نیستیم.
بخدا که هستیم، و اگر تو همه سطح کامپیوترت خوب بشود، در شرکتهای خارج جا داری، آنها سخت استخدام می کنند، چون به هندیها و چینی ها بیشتر معتقدند، ولی با تلاش، من معتقدم که می توانید شما نیز در خارج و یک کار آبرو مند جا داشته باشید.

متشکرم -بزرگمهر

moferferi
سه شنبه 23 تیر 1388, 18:19 عصر
سلام.
اين يك پروسيجر با يك متغير ورودي و يك متغير خروجيه(در ديتابيس northwnd



create PROCEDURE MySpWithInandOut2
@param1 int,
@param2 int=0 OUTPUT
as
select orderid,customerid from orders where employeeid=@param1;
select @param2 =count(*)
from orders where employeeid=@param1;
return @param2;
حالا براي پاس دادن مقدار از طريق سي شارپ و دريافت مقدار خروجي اين كارو ميكنيم

string Constr = "server=192.168.0.1,1632;Initial Catalog=NORTHWND;integrated security=true;";
SqlConnection CONN = new SqlConnection(Constr);
CONN.Open();
SqlCommand cmd = CONN.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "MySpWithInandOut2";
//--input
SqlParameter inparm = cmd.Parameters.Add("param1", SqlDbType.Int);
inparm.Direction = ParameterDirection.Input;
inparm.Value = 3;
//--output
SqlParameter ouparm = cmd.Parameters.Add("param2", SqlDbType.Int);
ouparm.Direction = ParameterDirection.Output;
//--return
SqlParameter retval = cmd.Parameters.Add("return_value", SqlDbType.Int);
retval.Direction = ParameterDirection.ReturnValue;
//execute command
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
// dataGridView1.Rows.Add(rdr.ToString());
Console.WriteLine("{0} {1}", rdr[0].ToString().PadRight(5)
, rdr[1].ToString());
}
rdr.Close();
Console.WriteLine("the outpot {0}", cmd.Parameters["param2"].Value);
Console.WriteLine("the return {0}", cmd.Parameters["return_value"].Value);

CONN.Close();
Console.ReadLine();
}