رویه های ذخیره شده اشیا در بانک اطلاعاتی (pptx) 11 اسلاید
دسته بندی : پاورپوینت
نوع فایل : PowerPoint (.pptx) ( قابل ویرایش و آماده پرینت )
تعداد اسلاید: 11 اسلاید
قسمتی از متن PowerPoint (.pptx) :
رویه های ذخیره شده اشیا در بانک اطلاعاتی
re
یا
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
کد فوق شکل کلی ساخت رویه های ذخیره شده می باشد .
به جای
YourProcedureName
یک نام برای برای رویه انتخاب کنید . سعی کنید نامی که انتخاب می نمایید مفهوم رویه شما را برساند مثلا برای درج یک رکورد جدید در جدول
Members
من نام
AddNewMember
را انتخاب می کنم و یا برای دریافت تمام رکورد های این جدول نام
GetAllMembers
نام با مفهومی است .
در پرانتز مقابل نام رویه پارامتر های رویه به همراه نوع پارامتر تعیین میشود ، اگر تعداد پارامتر ها بیشتر از یکی بود با ویرگول آنها را جدا می کنیم .
به جای
SQLStatement
دستورات
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
عبارت است از :
Precompiled
بودن آنها به این معنی که به زبان ماشین بسیار نزدیک شده و به طور کامل از
اول ترجمه نمیشود ، این امر باعث افزایش سرعت بارگزاری می گردد
.
قابلیت ذخیره داشته و میتوان از یک رویه چندین بار در کد نویسی استفاده کرد
.
دارای ویرایشگر
Query
می باشد (میتوانید به سادگی یک
Query
حرفه ای ایجاد کنید
)
دارای
Syntax Parser
هست و از خطاهای
SQL
جلوگیری می کند
.
دارای امنیت بالایی است و از هک شدن سایت شما توسط
SQL Injection
در بسیاری موارد جلوگیری می کند
.
قابلیت درج چندین دستور
SQL
را پشت سرهم داراست
.
قابلیت ارسال ورودی و خروجی دارد
.
قابلیت برنامه نویسی ( شرط ، حلقه و...) به زبان
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();
بهینه سازی
stored procedure
ها در
SQL Server
مورد 1- در نامهاي
SP
از
_sp
استفاده نكنيد. زيرا اين علامت مخصوص
sp
هاي سيستمي موجود در جدول
master
ميباشد و هنگامي كه از اين اختصار استفاده ميكنيد سيستم ابتدا دنبال اين نام در جداول سيستمي ميگردد. پس از اون اگه پيدا نكرد با
ownerDBO
به دنبال اون ميگرده كه همين باعث ميشه كلي از سرعت اجراي
sp
كاهش پيدا كنه.
2-در داخل يك
SP
بهتر است به جاي اينكه داخل آن از دو دستور
Select
استفاده كرد، هركدام را در داخل يك
SP
قرار داده و آنرا به هنگام نياز اجرا كنيم
.
به مثال زير توجه نماييد:
كد
:create Stored procedure dbo.SPTest @query bit as if @query=0 select * from authors else select * from publishers go
بهتر است از نمونه زير استفاده شود.
كد
: create Stored procedure dbo.SPTest @query bit as if @query=0 Exec sptestFromauthors else Exec spTestfrompublishers go //-----------------// create Procedure dbo.spTestfromAuthors as select * from Authors go //-----------------// Create Procedure dbo.spTestFromPublishers as Select * from Publishers go
دليل استفاده از كد زير چيست و نسبت به كد بالا چه مزيتي دارد؟در داخل هر
sp
فقط يك
Query
ميتواند در داخل
cache SQL
قرار ميگيرد . و چون در داخل
SP
اول دو
query
هستند هر دفعه كه اين
SP
اجرا شود مجدد
SP
كامپايل خواهد شد و همين سرعت آنرا خواهد گرفت
.
نكته 1: در
SP
هايي كه نياز نيست كاربر متوجه بشه چه تعداد رديف تحت تاثير قرار گرفته است،حتماً در اول
SP
دستور
Set NoCount On
را بنويسيد. زيرا اگر اين دستور را ننويسيد هربار كه عملياتي صورت گرفته ،
SQL
تعداد رديفهاي تحت تاثير قرار گرفته را براي كاربر ارسال ميكند و همين باعث يك ترافيك الكي روي
client , server
ميشود.
نكته 2: تاجاييكه امكان داره دستورات داخل
SP
را كوچك نگه داريد. اين كمك ميكنه كه تعداد
Lock
ها كم بشه و سرعت كلي برنامه شما بالا بره. دو راه براي كاهش طول دستورات
SQL
موجود است.