create procedure Pro_orders (usersName varchar(40),
ordersPrice varchar(40), ordersDatetime varchar(40),out ordersId int )
begin
begin transaction
insert into orders(usersName,ordersPrice,ordersDatetime)
values (usersName,ordersPrice,ordersDatetime)
select max(ordersId) into ordersId
from orders
commit
end;
ordersPrice varchar(40), ordersDatetime varchar(40),out ordersId int )
begin
begin transaction
insert into orders(usersName,ordersPrice,ordersDatetime)
values (usersName,ordersPrice,ordersDatetime)
select max(ordersId) into ordersId
from orders
commit
end;
set autocommit = 0
ordersPrice varchar(40), ordersDatetime varchar(40),out ordersId int )
begin
begin transaction
insert into orders(usersName,ordersPrice,ordersDatetime)
values (usersName,ordersPrice,ordersDatetime)
select max(ordersId) into ordersId
from orders
commit
end;
修改为
create procedure Pro_orders (usersName varchar(40),
ordersPrice varchar(40), ordersDatetime varchar(40),out ordersId int )
begin
begin transaction
insert into orders(usersName,ordersPrice,ordersDatetime)
values (usersName,ordersPrice,ordersDatetime);
select max(ordersId) into ordersId
from orders;
commit
end;
PROCEDURE `test`.`EE`(IN usersName varchar(40),
IN ordersPrice varchar(40), IN ordersDatetime varchar(40),out ordersId int )
BEGIN
set autocommit=0;
insert into orders(`usersName`,`ordersPrice`,`ordersDatetime`)
values (usersName,ordersPrice,ordersDatetime) ;
select max(ordersId) into ordersId from orders ;
commit ;
END$$DELIMITER ;
调试通过
2. 利用delimiter //来定义 // 为提交符
3. MySQL中没有begin transaction ,换成START TRANSACTION ;或begin
4. 更换变量名不要和字段名重复。mysql> delimiter //
mysql> create procedure Pro_orders (usersName1 varchar(40),
-> ordersPrice1 varchar(40),
-> ordersDatetime1 varchar(40),
-> out ordersId int)
-> begin
-> START TRANSACTION ;
-> insert into orders (usersName,ordersPrice,ordersDatetime)
-> values (usersName1,ordersPrice1,ordersDatetime1);
-> select max(ordersId) into ordersId from orders ;
-> commit;
-> end
-> //
Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;
mysql>