فصل بیست و ششم :
Stored Procedure
Stored Procedure و یا بطور مختصر SP
یک sp گروهی از دستورات tsql است که در یک execution plan . کامپایل میشود .
sp در واقع ابجکت کامپایل شده ایی است که شامل یک و یا چند دستور tsql می باشد.
Sp می تواند دارای پارامتر های ورودی و خروجی باشد.
مهمترین تفاوت sp با udf این است که SP را بایستی توسط execute صدا زد.
Sp ها همانند function ها نبایستی الزاما مقداری را باز گردانند .می توانند در داخل خود select ی داشته باشند که تعدادی رکورد را باز گردانند .
بهبود چشمگیری در عملکرد دیتابیس ایجاد میکنند . چون یکبار کامپایل شده اند و نیز execution plan آنها cache شده است .به نسبت دستوراتی که هر بار ارسال میشوند .
مثال :
create procedure proctest2 @id smallint, @age int output
as
begin
select FirstName,LastName,LastAvg,@age=Age from Student where id=@id
set @age=(select age from Student where id=@id)
end
go
declare @age int;
exec proctest2 1,@age output
select @age
سه sp برای اعمال insert , delete ,update در جدول student بنویسید .بصورتی که در insert id جدید بصورت پارامتری بازگردد
به فیلم مراجعه شود
معرفی sp های سیستمی
sp_who
اطلاعات در مورد کاربران جاری و session های موجود در instance موجود
sp_configure
تنظیمات کلی سرور جاری
sp_tables
لیست کلیه ابجکت هایی که بتوان روی انها کوئری انجام داد
sp_columns 'student'
اطلاعات ستونهای یک جدول مشخص شده
sp_executesql
امکان تعریف پارامتر ، پس امن تر است .
از امکانات cached execution plan می تواند استفاده کند .
ساخت دستورات دینامیک
exec ('select * from student ')
exec sp_executesql N'select * from student'
declare @str as nvarchar(100);
set @str='select * from student where id=@id';
exec sp_executesql @str,N'@id smallint',1
SQL Injection
با مثال در فیلم موجود می باشد
بسیاری از مفاهیم درفیلم اموزشی بطور مفصل شرح داده شده اند . لذا حتما فیلم آموزشی این فصل را ببینید .
مفاهیم و موضوعات این فصل عبارتند از :
-
Stored Procedure
-
sp_executesql
-
SQL Injection و جلوگیری از آن