DELIMITER $$;DROP PROCEDURE IF EXISTS `ebill`.`SP_GETSEQNO`$$CREATE DEFINER=`AUTEK`@`%` PROCEDURE `SP_GETSEQNO`(storSEQNAME VARCHAR(32),  
storWORKDATE VARCHAR(10),  
OUT storSEQNO INT )
BEGIN

DECLARE storCLTID INT;    
IF  storWORKDATE=''  THEN   
     SELECT storCLTID = CLTID,storSEQNO = SEQNO FROM CLT_SEQ WHERE SEQNAME=storSEQNAME;
ELSE  
     SELECT storCLTID = CLTID,storSEQNO = SEQNO FROM CLT_SEQ WHERE SEQNAME=storSEQNAME AND WORKDATE=storWORKDATE;
END IF; 
IF row_count() = 0 THEN
   INSERT INTO CLT_SEQ(SEQNAME,WORKDATE,SEQNO) VALUES(storSEQNAME,storWORKDATE,1);  
   SET storSEQNO = 1;
ELSE
   UPDATE CLT_SEQ SET SEQNO=storSEQNO+1 WHERE CLTID=storCLTID;
   SET storSEQNO = storSEQNO+1;
END IF;
END$$DELIMITER ;$$

解决方案 »

  1.   

    DELIMITER $$DROP PROCEDURE IF EXISTS `SP_GETSEQNO`$$CREATE PROCEDURE `SP_GETSEQNO`(storSEQNAME VARCHAR(32), storWORKDATE VARCHAR(10),   
    OUT storSEQNO INT )
    BEGINDECLARE storCLTID INT;   
    IF storWORKDATE='' THEN   
       SELECT storCLTID = CLTID,storSEQNO = SEQNO FROM CLT_SEQ WHERE SEQNAME=storSEQNAME;
    ELSE   
       SELECT storCLTID = CLTID,storSEQNO = SEQNO FROM CLT_SEQ WHERE SEQNAME=storSEQNAME AND WORKDATE=storWORKDATE;
    END IF;  
    IF ROW_COUNT() = 0 THEN
       INSERT INTO CLT_SEQ(SEQNAME,WORKDATE,SEQNO) VALUES(storSEQNAME,storWORKDATE,1);   
       SET storSEQNO = 1;
    ELSE
       UPDATE CLT_SEQ SET SEQNO=storSEQNO+1 WHERE CLTID=storCLTID;
       SET storSEQNO = storSEQNO+1;
    END IF;
    END$$DELIMITER ;