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;

解决方案 »

  1.   

    begin transaction->
    set   autocommit   =   0
      

  2.   

    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;
    修改为
    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;
      

  3.   

    DELIMITER $$CREATE
        
        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 ;
    调试通过
      

  4.   

    1. 你需要在每句SQL后加; ,
    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>