存储过程报错,不知道错在哪里?求指教

SQL code

CREATE PROCEDURE `new_proc`(IN tableId1 INTEGER(11), IN tableId2 INTEGER(11))
    NOT DETERMINISTIC
    SQL SECURITY DEFINER
    
BEGIN
     declare perNum,oId1,oId2 INTEGER;
     
     select personNum  into perNum from tb_Order as ot where
     ot.tableId =tableId2
     and ot.isPay = 0;
     
     select id into oId1 from tb_Order as ot where
     ot.tableId = tableId1
     and ot.isPay = 0;
     
     select id into oId2 from tb_Order as ot where
     ot.tableId = tableId2
     and ot.isPay = 0;

     update tb_Order
     set personNum = personNum + perNum
     where id = oId2;
     
     update tb_OrderDetail set orderId = oId2 where orderId = oId1;
     
     update tb_Table set flag = 0 where id = tableId1;
     
     delete from tb_Order where id = oId1;

END;


创建了这样一个存储过程,可是在declare那句一直报错,不知道错在哪里,求指教!

作者: lianglin999   发布时间: 2011-05-17

DELIMITER $$
DROP PROCEDURE IF EXISTS `new_proc`$$
CREATE PROCEDURE `new_proc`(IN tableId1 INT, IN tableId2 INT)
BEGIN
  DECLARE perNum,oId1,oId2 INTEGER;
  SELECT personNum INTO perNum FROM tb_Order AS ot WHERE
  ot.tableId =tableId2
  AND ot.isPay = 0;
   
  SELECT id INTO oId1 FROM tb_Order AS ot WHERE
  ot.tableId = tableId1
  AND ot.isPay = 0;
   
  SELECT id INTO oId2 FROM tb_Order AS ot WHERE
  ot.tableId = tableId2
  AND ot.isPay = 0;

  UPDATE tb_Order
  SET personNum = personNum + perNum
  WHERE id = oId2;
   
  UPDATE tb_OrderDetail SET orderId = oId2 WHERE orderId = oId1;
   
  UPDATE tb_Table SET flag = 0 WHERE id = tableId1;
   
  DELETE FROM tb_Order WHERE id = oId1;

END ;$$
DELIMITER ;

作者: WWWWA   发布时间: 2011-05-17

DELIMITER $$

作者: rucypli   发布时间: 2011-05-17

把错误贴出来看看,如果是分号那里报错,就是楼上说的定界符原因

作者: zeldady   发布时间: 2011-05-17