ورود

View Full Version : سوال: کمک در نوشتن store procedure



مهرداد سیف زاده
دوشنبه 21 مرداد 1392, 11:20 صبح
چند تا جدول دارم که میخوام با یک بار query با دیتابیس توسط sore procedure بازگردانده بشه. جدول های من بصورت زیر هست:

menu ->
http://s4.picofile.com/file/7889725264/1.jpg

news->
http://s1.picofile.com/file/7889726234/2.jpg

میخوام store procedure ای بنویسم تا با یکبار فراخوانی تمام خبرها همراه با نام منو رو برگردونه. البته کد زیر رو نوشتم ولی کار نمیکنه در واقع با بازگردوندن چند مقداری مشکل دارم

DELIMITER $$

CREATE PROCEDURE `menuNameId` (IN Mid INT(10), OUT AllMenu VARCHAR(400))
BEGIN
DECLARE menu_name VARCHAR(400);
DECLARE MenuId INT(10);
SELECT `menu_id` FROM `news` WHERE `id`=Mid INTO MenuId;
SELECT `menu_name` FROM `menu` WHERE `id`=MenuId INTO AllMenu;
SELECT `menu_name` FROM `menu` WHERE `id`=Mid;
END

مهرداد سیف زاده
دوشنبه 21 مرداد 1392, 12:17 عصر
هر چقدر توی سایت ها گشتم جوابش نبود و آخرش خودم انقدر نوشتم و با آزمون و خطا بالاخره جواب داد.



DELIMITER $$

CREATE PROCEDURE `showNews` (
IN Nid INT(100)
)
BEGIN

DECLARE MID INT(100);
DECLARE AllMenu VARCHAR(400);
SELECT `menu_id` FROM `news` WHERE `id`=Nid INTO MID;
select `menu_name` from tadbir.menu where id=MID INTO AllMenu;
SELECT *,AllMenu FROM `news` WHERE `id`=Nid;
END

uthman
دوشنبه 21 مرداد 1392, 14:14 عصر
هر چقدر توی سایت ها گشتم جوابش نبود و آخرش خودم انقدر نوشتم و با آزمون و خطا بالاخره جواب داد.


احسنت.این جوری برنامه نویس خوبی میشی

javoooni
سه شنبه 22 مرداد 1392, 22:17 عصر
سلام دوست عزیز

از این هم می تونی استفاده کنی و فکر می کنم راحتتر هم هست.


CREATE PROCEDURE `SelectNewsWithCat` (IN _id int)
BEGIN
SET NAMES UTF8;
SELECT News.id, News.title, News.abstract, News.menu_id
FROM `news` AS News
JOIN `menu` AS Menu ON ( News.`menu_id` = Menu.`id` )
WHERE News.`id` = _id
LIMIT 0 , 30 ;
END$$

یه نکته هم بگم این بلاک رو همیشه استفاده کن چون بعضی سرور های لینوکسی زبانت بهم میریزه

SET NAMES UTF8;