# پایگاه‌های داده > سایر پایگاه‌های داده > MySQL >  طرز استفاده از Store Procedure

## famarini

با سلام به همه دوستان
من خيلي دنبال اين مطلب گشتم اما مثل اينكه براي كسي مهم نيست كه كوئريها رو ديتابيس پردازش كنه لطفا دوستاني كه در اين زمينه كار كرند طرز نوشتن دستورات و همچنين اين نوشتها كجا ذخيره مي شن رو توضيح بدن بازم همه ممنون مي شم تا اونجايي كه مي شه كامل توضيح بدين.

موفق و پيروز باشيد

----------


## famarini

با تشكر از تمامي دوستاني كه اومدن اين تاپيك و ديدن و هيچ تلاشي جهت حل اين قصه نكردند دوستاني كه بعدا ميان و اين تاپيك مي بينن برن به آدرس زير جواب و مي تونن بخونن :

http://www.macronimous.com/resources...QL_and_PHP.asp

----------


## esz_sa

salam bar hameh

----------


## mahyar13652000

سلام من هم خیلی دنبال این مطلب می گردم اما متاسفانه کسی چیزی نمی نویسه

----------


## contestant

سلام
من امروز این تاپیک رو دیدم، هرچند که زمان زیادی از افتتاح اون گذشته، ولی لاذم میدونم یه نمونه کد و توضیح مختصری در باره Stored Procedures بدم.

به نمونه کد زیر توجه نمایید:
کد زیر با این فرض نوشته شده است که یک جدول با نام Order داریم که میخواهیم order_id کسی که بیشترین سفارش را داده است را نمایش دهیم. کد آن از قرار زیر است:


delimiter //
CREATE PROCEDURE largest_order(out largest_id int)
BEGIN
declare this_id int;
declare this_amount float;
declare l_id int;
declare l_amount float default 0.0;
declare done int default 0;
declare continue handler FOR NOT FOUND set done = 1;
declare cursor_name1 cursor for select order_id, amount from orders;
open cursor_name1;
REPEAT
fetch cursor_name1 into this_id , this_amount;
IF NOT done THEN
IF this_amount > l_amount THEN
set l_amount = this_amount;
set l_id = this_id;
END IF;
END IF;
until done END REPEAT;
close cursor_name1;
set largest_id = l_id;
END;
//
delimiter ;


برای فراخوانی و استفاده از این "روال ذخیره شده" یا Stored Procedure از کد زیر استفاده میکنیم:

CALL largest_order(@largestid);
select @largestid;


کدها رو فعلا توضیح نمیدم تا اگر از این مطلب بازدید شد و به به ادامه علاقه نشون داده شد، این کدها رو خط به خط توضیح میدم.
*
اگر مطلب براتون مفید بوده، لطفا تشکر فراموش نشه*  :قلب:  :بوس:

----------


## DataMaster

> با سلام به همه دوستان
> من خيلي دنبال اين مطلب گشتم اما مثل اينكه براي كسي مهم نيست كه كوئريها رو ديتابيس پردازش كنه لطفا دوستاني كه در اين زمينه كار كرند طرز نوشتن دستورات و همچنين اين نوشتها كجا ذخيره مي شن رو توضيح بدن بازم همه ممنون مي شم تا اونجايي كه مي شه كامل توضيح بدين.
> 
> موفق و پيروز باشيد


عزیز من شما کاملا توی تالار PHP باید این سوال رو مطرح میکردید
اگر در مورد نحوه نوشتن پروسیجرها در Mysql مشکل دارید بخش Mysql مناسب است

----------


## try_3tishk

سلام من با store procedure پروژه نوشتم.
چند نمونه کد واست می ذارم.
تو این کد طلاعاتی را وارد جدول کرده ایم.اول جداولتو ایجاد کن بعد دست به کار شو
CREATE PROCEDURE insabspresent
@absid    int,
@absname          nvarchar(30),
@absshift    nvarchar (20),
@absdate    nvarchar (12),
@absstatuse nvarchar(15),
@abstime nvarchar(20)
AS
insert into  table(absid,absname,absshift,absdate,absstatuse,ab  stime)
values(@absid,@absname,@absshift,@absdate,@absstat  use,@abstime)
GO
کد بعدی دارم select میکنم.
CREATE PROCEDURE selectderivers
@drivid int,
@drivname nvarchar    (30)
 AS
select * from drivers where drivid=@drivid and drivname=@drivname
GO
کد بعدی update میکنم
CREATE PROCEDURE upath
@pathid    int,
@pathname    nvarchar    (50),
@pathcost    nvarchar    (15),
@pathroof    nvarchar    (20),
@pathtime    nvarchar    (10)
AS
update paths set pathname=@pathname,pathcost=@pathcost,pathroof=@pa  throof,pathtime=@pathtime
 where pathid=@pathid
GO
اینم ای میلمه اگه مشکلی داشتیید ای میل بزنید.
mehran20te20@gmail.com خانم عباس پور

----------


## mshakeri

این فایل آموزش MySQL stored procedure که انگلیسی ولی خیلی ساده گفنه شده.
mysql-storedprocedures.rar

----------


## contestant

اگر چه استفاده از Stored Procedure ها یا همان روال ها و روش های ذخیره شده در پایگاه داده، در انجام کار، سهولت بسیار زیادی ایجاد میکنه و میشه بسیار بهتر و پیشرفته تر به مدیریت پایگاه داده از داخل خودش پرداخت، ولی استفاده از این روش در پایگاه داده MySQL پیشنهاد نمیشود.

این امر دلایلی داره از قبیل:
- قدرت کم مای اسکیوال در پردازش های زیاد در آن واحد.
- تعاملی بودن اطلاعات در وب که با توجه به مورد فوق باعث کش کردن پایگاه داده و عدم سرویس دهی آن میشود.

اما پایگاه های داده ای نظیر SQL Server که از قدرت بیشتری برخوردار هستند و ترجیحا برای نرم افزارهای Desktop بسیار مفید بوده و علاوه بر موارد ذکر شده، امنیت نرم افزار را نیز بالا میبرد، چون اطلاعات ذخیره شده در این پایگاه داده، قابل بازیابی نیستند.

موفق باشید

----------


## I,Nobody

> اما پایگاه های داده ای نظیر SQL Server که از قدرت بیشتری برخوردار هستند و  ترجیحا برای نرم افزارهای Desktop بسیار مفید بوده و علاوه بر موارد ذکر  شده، امنیت نرم افزار را نیز بالا میبرد، چون اطلاعات ذخیره شده در این  پایگاه داده، قابل بازیابی نیستند


دوست عزيز، اين مطالب رو رو چه حساب گفتيد؟ فاكتور قدرت و امنيت از نظر شما چيست؟
چطور به راحتي ميتونيد در مورد قدرت بيشتر يك ديتابيس صحبت كنيد در حالي كه هر كدام از اين دو ديتابيس، برتري هايي نسبت به همديگر دارند.
خواهشاً از كلي گويي و بيان نظرات بي بنيان جلوگيري كنيد. چون ممكنه به كلي مسير كار يك تازه كار رو تغيير بده.

----------


## contestant

> دوست عزيز، اين مطالب رو رو چه حساب گفتيد؟ فاكتور قدرت و امنيت از نظر شما چيست؟
> چطور به راحتي ميتونيد در مورد قدرت بيشتر يك ديتابيس صحبت كنيد در حالي كه هر كدام از اين دو ديتابيس، برتري هايي نسبت به همديگر دارند.
> خواهشاً از كلي گويي و بيان نظرات بي بنيان جلوگيري كنيد. چون ممكنه به كلي مسير كار يك تازه كار رو تغيير بده.


دوست عزیز شما درست میفرمایید
مای اسکیوال هم محاسنی نسبت به اسکیوال سرور داره، به طور مثال ارزانتر و قابل دسترس تر بودن آن در اکثر هاستها و ... .
اما منظور من از قدرت بیشتر اسکیوال سرور میشه به تعداد محاسباتی که میتونه در واحد زمان انجام بده اشاره کرد، شما این مطلب رو زمانی لمس میکنید که به طور مثال 1 میلیون رکورد رو همزمان فرا بخونید و اینزرت کنید و یا تعدادی تیبل رو با تعداده قابل ملاحظه ای رکورد اینیر جوین کنید.
همچنین استفاده از استورد پروسیجرها از جمله مشکلاتی که در مای اسکیوال ایجاد میکنند، بالا بردن حجم اطلاعاتی و در نتیجه پایین اومدن سرعت عملکرد اشاره کرد و همچنین کش کردن اطلاعات به این ترتیب که مثلا یه متغیر ممکنه هنوز مقدار قبلی رو ذخیره داشته باشه و در محاصبات جدید اخلال ایجاد کنه.

و یه مطلبه دیگه که لازم به ذکره، پایگاه داده ایجاد شده در مای اسکیوال در قالب یک text هست در حالی که اسکیوال سرور فایل dll.

به هر حال من چیزایی رو گفتم که یا تجربه خودم بوده و یا تجربه پیشکسوتان، اگر گستاخی کردم عذر میخوام  :چشمک: 

موفق باشید

----------

