مثال ساده پرداخت بانکی با استفاده از تراکنش و پروسیجر در مای اس کیو ال
نویسنده: ناصرنیازی
تاریخ: ۱۳۹۳/۱۰/۳۰ ۱۴:۲۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
DELIMITER $$
CREATE
DEFINER=`user_name`@`host_name`|CURRENT_USER
PROCEDURE `transition_name`(
IN | OUT | INOUT `parameter_name` type(bigint,int , ...)
)
SQL SECURITY DEFINER| INVOKER
transition_name: BEGIN
#----procedure_body
END DEFINER=`user_name`@`host_name`|CURRENT_USER
CURRENT_USER
SQL SECURITY DEFINER| INVOKER
DELIMITER $$
CREATE
DEFINER=CURRENT_USER
PROCEDURE `transition_pay`(
#-----------input value
IN `pay_value` bigint,
IN `admin_id` int,
#-------------result code
OUT `result` bigint
)
SQL SECURITY INVOKER
transition_pay: BEGIN
DECLARE admin_credit DOUBLE DEFAULT 0;
SELECT `Credit`
INTO admin_credit
FROM `Admin`
WHERE `Admin_id` = admin_id
#----- transaction body
END IF admin_id=0 THEN set result = -1 ; #exit procedure LEAVE transition_pay; END IF;
START TRANSACTION;
INSERT INTO
`PayBalance` (`Value` , `Admin_id` )
VALUES (pay_value, admin_id);
UPDATE `Admin`
SET `Credit`=admin_credit + pay_value
WHERE `admin_id`=admin_id;
COMMIT; IF pay_value=0 THEN set result = -1 ; #roolback procedure ROLLBACK ; END IF;
SET autocommit = {0 | 1}