مقدمه
stored procedure ها دارای نام مشخص هستند که در دل آنها مجموعه ای از دستورات کوئری ساختاریافته وجود دارند که در یک سیستم مدیریت پایگاه داده رابطه ای (RDBMS) ذخیره می شود و می توان آن را بارها و بارها مورد استفاده قرار داد.
مزایای استفاده از stored procedure
1. یک stored procedure یک لایه امنیتی مهم بین رابط کاربری و پایگاه داده فراهم می کند
2. از طریق کنترلهای دسترسی به دادهها از امنیت پشتیبانی میکند، زیرا کاربران نهایی ممکن است دادهای را وارد یا تغییر دهند، اما نیازی به نوشتن procedure نخواهند داشت.
3. یک stored procedure یکپارچگی داده ها را حفظ می کند زیرا اطلاعات به شیوه ای ثابت وارد می شوند.
4. بهره وری را بهبود می بخشد زیرا دستورات در یک stored procedure فقط باید یک بار نوشته شوند.
5. کوئری ها به طور مستقیم در رابط گرافیکی نوشته میشوند و این میتواند برای کارهای ساده مفید باشد اما برای کارهای پیچیده مشکل ساز میشود به همین دلیل stored procedure جایگزین خوبی هستند
6. به دلیل این که stored procedure را میتوان به واحدهای کوچک تر و مستقل تر تقسیم کرد ، در صورت بروز مشکل در یک برنامه می توان مشکل را به راحتی در یک واحد کوچک تر تجزیه و تحلیل کرد و علت ان را تشخیص داد . این امر می تواند فرایند رفع عیب را آسان تر و سریع تر کند.
7. اگر عملکرد یک رابط کاربر گرافیکی ضعیف باشد ، به جای این که کد منبع رابط کاربر گرافیکی را اصلاح کنیم ، میتوانیم عملکرد stored procedure را که رابط کاربری گرافیکی از آن استفاده میکند با تنظیم پارامترهای مختلف بهبود بخشیم . این امر می تواند به بهبود عملکرد رابط گرافیکی کمک کند بدون اینکه نیاز به اصلاح کد منبع رابط گرافیکی باشیم
stored procedure در SQL
stored procedure در SQLمی توانند برای انجام عملیات مختلف در پایگاه داده استفاده شوند. آنها می توانند پارامترهای ورودی را بپذیرند و مقادیر متعددی از پارامترهای خروجی را برگردانند .
stored procedure در پایگاه داده تعریف شده توسط کاربر یا در همه پایگاههای داده سیستم ایجاد میشوند، به جز زمانی که از پایگاه داده منبع استفاده میشود.
procedureهای موقت در Tempdbذخیره می شوند و دو نوع procedureموقت وجود دارد: محلی و سراسری (local and global)
procedureهای محلی فقط برای اتصال کاربر فعلی قابل مشاهده هستند، در حالی که procedureهای جهانی پس از ایجاد برای هر کاربری قابل مشاهده هستند.
syntax stored procedure به صورت زیر است
CREATE PROCEDURE procedure_name
AS
sql_statement
GO;
و برای اجرای ان از EXEC استفاده میکنیم :
EXEC procedure_name
یک بخش از جدول customer را در اینجا داریم:
مثال زیر یک procedure با نام Allcustomers میسازد که در آن تمام جدول customer را نمایش میدهد.
CREATE PROCEDURE AllCustomers
AS
SELECT * FROM Customers
GO;
و برای اجرای این کوئری داریم :
EXEC AllCustomers;
در storeprocedure ها از متغییرها نیز میتوان استفاده کرد
به عنوان مثال procedure زیر از جدول Customers شهر خاصی رو انتخاب می کند
CREATE PROCEDURE AllCustomers @City nvarchar(30)
AS
SELECT * FROM Customers WHERE City = @City
GO
و هنگام اجرای آن می خواهیم شهر لندن را به عنوان خروجی برگرداند
EXEC AllCustomers @City = 'London'
می توان به جای لندن هر شهر دیگری را قرار داد تا رکورد مربوط به آن شهر را برگرداند.
اگر بخواهیم در storeprocedure از چند متغیر استفاده کنیم ، کافیست آنها را با " ," از هم جدا کنیم.
به عنوان مثال اگر بخواهیم از جدول customer شهر و کد پستی خاصی را به عنوان خروجی دریافت کنیم ، داریم :
CREATE PROCEDURE AllCustomers @City nvarchar(30), @PostalCode nvarchar(10)
AS
SELECT * FROM Customers WHERE City = @City AND PostalCode = @PostalCode
GO
حال برای خروجی میخواهیم شهر لندن و کد پستی WA1 1DP را داشته باشیم ، پس:
EXEC AllCustomers @City = 'London', @PostalCode = 'WA1 1DP'
منابع
w3schools . (11-07-2023) . https://www.w3schools.com/sql/sql_stored_procedures.asp
Hughes,Adam,(2019),store procedure, https://www.techtarget.com/searchoracle/definition/stored-procedure