ورود

نسخه کامل مشاهده نسخه کامل : Stored Procedure



hobab1987
22-09-2010, 08:57
سلام

مي خواستم بدونم:
Stored Procedure چيه؟ و چه كاربردي داره؟

TKNC
22-09-2010, 09:28
با سلام ؛

Stored Procedure چیست ؟
Stored Procedure یا Sp یا به زبان فارسی " رویه های ذخیره شده " اشیایی اجرا پذیر در بانک اطلاعاتی SQL Server هستند که شامل یک یا چندین دستور SQL می شود ، این رویه ها میتوانند پارامتر های ورودی و خروجی داشته باشند .
همچنین میتوان داخل این رویه ها به زبان SQL برنامه نویسی کرد .
مهم ترین کاربر این رویه ها ذخیره کردن دستورات Select , Insert , Update , Delete هست یا ترکیبی از اینها .
نحوه ساخت این رویه ها به صورت زیر می باشد :
•وارد بانک اطلاعاتی SQL Server شده ، پس از باز کردن بانک مورد نظر در قسمت Programmability وارد بخش Stored Procedure شوید .
•بر روی Stored Procedure کلیک راست کرده و New Stored Procedure را انتخاب نمایید .
•احتمالا کد های پیشفرضی را در این صفحه مشاهده می کنید ، همه این کد هارا پا کرده و به صورت زیر کد نویسی کنید :


Create Procedure YourProcedureName(@FirstParamete DataType,@SecondParameter DataType,...)
As
Begin
SQLStatement
End
کد فوق شکل کلی ساخت رویه های ذخیره شده می باشد .
به جای Your Procedure Name یک نام برای برای رویه انتخاب کنید . سعی کنید نامی که انتخاب می نمایید مفهوم رویه شما را برساند مثلا برای درج یک رکورد جدید در جدول Members من نام Add New Member را انتخاب می کنم و یا برای دریافت تمام رکورد های این جدول نام GetAll Members نام با مفهومی است .
در پرانتز مقابل نام رویه پارامتر های رویه به همراه نوع پارامتر تعیین میشود ، اگر تعداد پارامتر ها بیشتر از یکی بود با ویرگول آنها را جدا می کنیم .
به جای SQL Statement دستورات SQl را که بین Begin و End نوشته می شوند تایپ کنید .
دستوراتی مانند Select , Insert , Update , Delete و....
به عنوان مثال Sp زیر اطلاعات کاربر را با دریافت پارامتر نام کاربری (@ID) از جدول TBL_Members دریافت
می کند :

create procedure GetMemberbyID(@ID nvarchar(100))
as
begin


select * from TBL_Members where ID=@ID


end

سپس بر روی دکمه Execute کلیک کرده تا رویه شما ساخته و ذخیره گردد .
برخی از قابلیت های رویه های ذخیره شده یا Stored Procedure عبارت است از :

1.Precompiled بودن آنها به این معنی که به زبان ماشین بسیار نزدیک شده و به طور کامل از اول ترجمه نمیشود ، این امر باعث افزایش سرعت بارگزاری می گردد .
2.قابلیت ذخیره داشته و میتوان از یک رویه چندین بار در کد نویسی استفاده کرد .
3.دارای ویرایشگر Query می باشد (میتوانید به سادگی یک Query حرفه ای ایجاد کنید)
4.دارای Syntax Parser هست و از خطاهای SQL جلوگیری می کند .
5.دارای امنیت بالایی است و از -- شدن سایت شما توسط SQL Injection در بسیاری موارد جلوگیری می کند .
6.قابلیت درج چندین دستور SQL را پشت سرهم داراست .
7.قابلیت ارسال ورودی و خروجی دارد .
8.قابلیت برنامه نویسی ( شرط ، حلقه و...) به زبان TransactSQL دارد .
و.....
حال که با قابلیت ها ونحوه ساخت Stored Procedure آشنا شدید بد نیست که به نحوه استفاده از این ابزار جالب در Asp.NET بپردازیم .
استفاده از این ابزار بسیار ساده هست . اگر از SQL Datasource یا ObjectDatasource استفاده می کنید یک ویزارد برای ساخت و استفاده از Stored Procedure ها قرار داده شده که به راحتی آن را مدیریت کنید .
اگر از کد نویسی برای کار با بانک های اطلاعاتی استفاده می کنید کافیه بعد از تعریف SQLCommand به جای دستورات SQL نام SP را وارد نموده و بعد از آن کد زیر را اضافه نمایید :

Cmd.CommandType = CommandType.StoredProcedure;

این کد به برنامه می گوید که دستورات نوشته شده از نوع Stored Procedure هستند و نیازی به ترجمه آن ها نیست .
در نهایت کد های اتصال ما به شکل زیر خواهد بود :

SqlConnection Con=new SqlConnection("YourConnectionString");
SqlCommand Cmd = new SqlCommand("YourProcedureName", Con);


Cmd.CommandType = CommandType.StoredProcedure;


Con.Open();


// Some Code...


Con.Close();

برای ارسال پارامتر هم به صورت زیر عمل می کنیم :

SqlConnection Con = new SqlConnection("YourConnectionString");
SqlCommand Cmd = new SqlCommand("YourProcedureName", Con);


Cmd.CommandType = CommandType.StoredProcedure;
Cmd.Parameters.AddWithValue("@FirstParam", Textbox1.Text);
Cmd.Parameters.AddWithValue("@SecondParam", Textbox2.Text);
Con.Open();


// Some Code...


Con.Close();
همانطور که ملاحظه می فرمایید فرض کردم که SP داری دو پارامتر به نام FirstParam و SecondParam هست.
(البته شما باید به شکل صحیحی پارامتر ها را نام گزاری کنید) و از طریق متد Add With Value آنهارا مقدار دهی نموده¬ام .
به طور خلاصه :
برنامه در حال اجرا در پایگاه داده است که می تواند مجموعه اقدامات بر اساس ورودی های شما ، آنها را ارسال کنند. با استفاده از روش ذخیره ، سریعتر از انجام همان کار در کلاینت ، چرا که برنامه را اجرا می کند درست در داخل سرویس دهنده پایگاه داده.
امیدوارم این مقاله برای شما مفید باشد .
ماخذ [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

saman2644
10-10-2010, 12:59
با store prucdor به سرعت بالاتري ميرسي