我用的是wamp的集成PHP+mysql,在用下面代码创建储存过程时,显示有问题,但是确认无误再输入时,它就说CJ_Date已经存在,那我创建的是否成功?还有下面的代码有没有问题?我照书上打的DELIMITER $$
CREATE PROCEDURE CJ_Data(in_xh CHAR(6),in_kch CHAR(3),in_cj INT(4))
BEGIN
     DECLARE in_count INT(4);
     DECLARE in_xf    TINYINT(1);
     DECLARE in_cjb_cj INT(4);
     SELECT XF INTO in_xf FROM KCB WHERE KCH=in_kch;
     SELECT COUNT(*) INTO in_count FROM CJB WHERE XH=in_xh AND KCH=in_kch;
     SELECT CJ INTO in_cjb_cj FROM CJB WHERE XH=in_xh AND KCH=in_kch;
     IF in_count>0 THEN
     BEGIN
         DELETE FROM CJB WHERE XH=in_xh and KCH=in_kch;
         IF in_cjb_cj>60 THEN
               UPDATE XSB set ZXF=ZXF-in_xf WHERE XH=in_xh;
         END IF;
     END;
     END IF;
     IF in_cj!=-1 THEN
     BEGIN
         INSERT INTO CJB VALUES(in_xh,in_kch,in_cj);
         IF in_cj>60 THEN
               UPDATE XSB SET ZXF=ZXF+in_xf WHERE XH=in_xh;
         END IF;
     END;
     END IF;
END$$
DELIMITER;

解决方案 »

  1.   

    没问题  可以只行成功
    mysql> DELIMITER $$
    mysql> CREATE PROCEDURE CJ_Data(in_xh CHAR(6),in_kch CHAR(3),in_cj INT(4))
        -> BEGIN
        ->      DECLARE in_count INT(4);
        ->      DECLARE in_xf    TINYINT(1);
        ->      DECLARE in_cjb_cj INT(4);
        ->      SELECT XF INTO in_xf FROM KCB WHERE KCH=in_kch;
        ->      SELECT COUNT(*) INTO in_count FROM CJB WHERE XH=in_xh AND KCH=in_kch;
        ->      SELECT CJ INTO in_cjb_cj FROM CJB WHERE XH=in_xh AND KCH=in_kch;
        ->      IF in_count>0 THEN
        ->      BEGIN
        ->          DELETE FROM CJB WHERE XH=in_xh and KCH=in_kch;
        ->          IF in_cjb_cj>60 THEN
        ->                UPDATE XSB set ZXF=ZXF-in_xf WHERE XH=in_xh;
        ->          END IF;
        ->      END;
        ->      END IF;
        ->      IF in_cj!=-1 THEN
        ->      BEGIN
        ->          INSERT INTO CJB VALUES(in_xh,in_kch,in_cj);
        ->          IF in_cj>60 THEN
        ->                UPDATE XSB SET ZXF=ZXF+in_xf WHERE XH=in_xh;
        ->          END IF;
        ->      END;
        ->      END IF;
        -> END$$
    Query OK, 0 rows affected (0.00 sec)mysql> DELIMITER;
      

  2.   

    在开始时加入
    DROP procedure IF exists CJ_Data;
      

  3.   

    加上
    drop procedure if exists CJ_Data;