حسن عسکری
حسن عسکری
خواندن ۲ دقیقه·۶ ماه پیش

Stored Procedure


میخوایم بدونیم Stored Procedure چیه و چه کارایی داره

خیلی ساده بخوام بگم یه اسکریپته که با اس کیو ال نوشته میشه

یعنی یه سری دستورات رو ما توی دیتابیس ذخیره میکنیم با یه اسم خاص هر موقع بخوایم از اون دستورات استفاده کنیم اون اسم رو صدا میزنیم


مثلا شما میخوای از جدول کاربرها اطلاعات یه کاربر رو بگیری

حالا این یه مثال سادس شما میتونی از کوئری ساده استفاده کنید یا هم میتونید از پرسیجر استفاده کنید و توی دیتا بیس کوئری شو بزارید هرجایی که خواستید اطلاعات کاربری رو بگیرید فقط کافیه صداش بزنید

CREATE PROCEDURE نام پرسیجر( IN user_id INT ) BEGIN //در این قسمت شما دستورات اس کیو ال خود را وارد میکنید SELECT * FROM users WHERE id = user_id; END;



واسه استفاده ازش هم مثال پایین که حالا من از pdo استفاده کردم شما از هر روشی که بخواید میتونید استفادهه کنید فقط کافید کال کنید اسم اون پرسیجر رو و اون مقدار مورد نظر رو بهش بدید

$user_id = 123; $sql = &quotCALL اسم پرسیجر(:user_id)&quot $stmt = $pdo->prepare($sql); $stmt->bindParam(':user_id', $user_id, PDO::PARAM_INT); $stmt->execute(); $user = $stmt->fetch(PDO::FETCH_ASSOC);


ای اقا خوب چه کاریه همون کوئری ساده رو میزنیم الان بهتون میگم چرا بهتره از پرسیجر ها استفاده کنید

ببینید پرسیجر ها قبل از اولین اجرا توسط موتور پایگاه داده کامپایل میشن و هربار شما صداش بزنید فقط اجراش میکنه که باعث میشه سریع تر باشه

ولی کوئری های عادی هر بار که اجرا بشن توسط موتور پایگاه داده تفسیر و بعد اجرا میشن خوب این باعث میشه یکم زمان بر تر بشه پروسه


حالا پایین یه سری تفاوت های دیگه ای هم اماده کردم براتون که بخونید بد نیست


از لحاظ محل ذخیره :

پرسیجر ها در پایگاه داده ذخیره میشن

کوئری های عادی در برنامه شما


از لحاظ سطح دسترسی :

پرسیجر ها میتونن توسط برنامه های مختلف از طریق یه رابط تعریف شده فراخوانی بشن چون توی دیتا بیس هستن

ولی کوئری های عادی فقط میتونن توسط برنامه شما اجرا شوند


از لحاظ امنیت:

پرسیجر ها میتونن با استفاده از مجوز های پایگاه داده کنترل بشن تا فقط کابرای مجاز بتونن اونارو اجرا کنن

کوئری عادی دیگه بستگی داره شما نکات امنیتی رو رعایت کرده باشین یا نه


از لحاظ خوانایی:

پرسیجر ها چون توی دیتا بیس متمرکز هستن و هر جا بخواین فقط کافیه اسمشونو صدا بزنید خوانایی بیشتری دارن

ولی کوئری های عادی در پروژه شما پراکنده هستن خوانایی دشوار تری دارن


از لحاظ نگهداری :

پرسیجر ها یه جا هستن و هر تغییری بخوای بدی راحت تغییر میدی و همه جای پروژه اطلاعات بروزرو برمیگردونه

ولی کوئری عادی باید بری دستی تمام کوئری هارو تغییر بدی

stored procedureدیتابیسdatabaseuser id
شاید از این پست‌ها خوشتان بیاید