学习笔记,做个记号

DELIMITER $$

DROP PROCEDURE IF EXISTS `procInsertOrderInfoOrderList` $$
CREATE PROCEDURE `procInsertOrderInfoOrderList`(Dids TEXT,Mids TEXT,Mnums TEXT,Onums INT,Uids INT,Oremarks TEXT,Oflags INT,Nstatus INT)
BEGIN
DECLARE strDids TEXT DEFAULT '';
DECLARE iDid INT DEFAULT 0;
DECLARE strMids TEXT DEFAULT '';
DECLARE strMnums TEXT DEFAULT '';
DECLARE strOremarks TEXT DEFAULT '';
DECLARE sMids VARCHAR(20) DEFAULT '';
DECLARE iMnums INT DEFAULT 1;
DECLARE sOremarks VARCHAR(200) DEFAULT '';
DECLARE iLength INT DEFAULT 0;
DECLARE iCount INT;
DECLARE iNum INT;
DECLARE iFirst INT DEFAULT 0;
DECLARE sOrids VARCHAR(20) DEFAULT '';
DECLARE iOIid INT DEFAULT 0;
DECLARE iMflag INT DEFAULT 0;
DECLARE iMprice DECIMAL(18,2) DEFAULT 0;
DECLARE isNum INT DEFAULT 0;
DECLARE OrderInfo_flag INT DEFAULT 0;
DECLARE ii INT DEFAULT 1;
DECLARE mm INT DEFAULT 1;
DECLARE nn INT DEFAULT 1;
DECLARE iCount1 INT DEFAULT 0;
DECLARE iBLid INT DEFAULT 0;
DECLARE iBnum INT DEFAULT 0;
DECLARE iMid INT DEFAULT 0;
DECLARE sMid TEXT DEFAULT '';
DECLARE strResult TEXT DEFAULT '';
DECLARE strBnum TEXT DEFAULT '';
DECLARE sBnum TEXT DEFAULT '';
SET iCount = 1;
SET iNum = 1;
START TRANSACTION;
IF Oflags = 0 THEN -- not tc
IF Nstatus = 0 THEN -- NOT TT
SELECT COUNT(`Did`) INTO iFirst FROM `OrderInfo` WHERE ( `Did` = Dids ) AND ( `Ostatus` = 0 );
IF iFirst = 0 THEN
SELECT CONCAT(N'P',SUBSTRING(NOW()+0,1,14),SUBSTRING(RAND(),3,3)) INTO sOrids;
UPDATE `DingingTable` SET `Dstatus` = 3 WHERE ( `Did` = Dids ) AND ( `Dstatus` IN (1,2) );
INSERT INTO `OrderInfo`( `Orid`,`Did`,`Onum`,`Uid` ) VALUES( sOrids,Dids,Onums,Uids );
SELECT LAST_INSERT_ID() INTO iOIid FROM `OrderInfo` LIMIT 1;
SELECT ( LENGTH(Mids) - LENGTH(REPLACE(Mids,',','')) + 1 ) INTO iLength;
WHILE iCount <= iLength DO
SELECT ( CONCAT(Mids,',') ) INTO Mids;
SELECT ( CONCAT(Mnums,',') ) INTO Mnums;
SELECT ( CONCAT(Oremarks,',') ) INTO Oremarks;
IF( iCount = 1 ) THEN
SELECT SUBSTRING(Mids,1,POSITION(',' IN Mids) - 1) INTO sMids;
SELECT SUBSTRING(Mnums,1,POSITION(',' IN Mnums) - 1) INTO iMnums;
SELECT SUBSTRING(Oremarks,1,POSITION(',' IN Oremarks) - 1) INTO sOremarks;
SELECT funIsNum(sMids) INTO isNum;
IF( isNum = 1 ) THEN
SELECT `Mprice`,`Mflag` INTO iMprice,iMflag FROM `Menu` WHERE `Mid` = sMids;
SELECT CAST(sMids AS SIGNED) INTO iMid;
ELSE
SELECT `Mid`,`Mprice`,`Mflag` INTO iMid,iMprice,iMflag FROM `Menu` WHERE `Mname1` = LOWER(sMids);
END IF;
IF iMflag != 2 THEN
WHILE ( iMnums >= 1 ) DO
INSERT INTO `OrderList`(`OIid`,`Mid`,`Mprice`,`Uid`,`Oremark`) VALUES(iOIid,iMid,iMprice,Uids,sOremarks);
SELECT ( iMnums - 1 ) INTO iMnums;
END WHILE;
ELSE
INSERT INTO `OrderList`( `OIid`,`Mid`,`Mprice`,`Oratio`,`Uid`,`Oremark`) VALUES(iOIid,iMid,iMprice,iMnums,Uids,sOremarks);
END IF;
ELSEIF ( iCount <= iLength ) THEN
SELECT SUBSTRING(Mids,POSITION(',' IN Mids) + 1,LENGTH(Mids)) INTO strMids;
SELECT SUBSTRING(Mnums,POSITION(',' IN Mnums) + 1,LENGTH(Mnums)) INTO strMnums;
SELECT SUBSTRING(Oremarks,POSITION(',' IN Oremarks) + 1,LENGTH(Oremarks)) INTO strOremarks;
WHILE (iNum < iCount - 1) DO
SELECT SUBSTRING(strMids,POSITION(',' IN strMids) + 1,LENGTH(strMids)) INTO strMids;
SELECT SUBSTRING(strMnums,POSITION(',' IN strMnums) + 1,LENGTH(strMnums)) INTO strMnums;
SELECT SUBSTRING(strOremarks,POSITION(',' IN strOremarks) + 1,LENGTH(strOremarks)) INTO strOremarks;
SELECT (iNum + 1) INTO iNum;
END WHILE;
SET iNum = 1;
SELECT SUBSTRING(strMids,1,POSITION(',' IN strMids) - 1) INTO sMids;
SELECT SUBSTRING(strMnums,1,POSITION(',' IN strMnums) - 1) INTO iMnums;
SELECT SUBSTRING(strOremarks,1,POSITION(',' IN strOremarks) - 1) INTO sOremarks;
SELECT funIsNum(sMids) INTO isNum;
IF( isNum = 1 ) THEN
SELECT `Mprice`,`Mflag` INTO iMprice,iMflag FROM `Menu` WHERE `Mid` = sMids;
SELECT CAST(sMids AS SIGNED) INTO iMid;
ELSE
SELECT `Mid`,`Mprice`,`Mflag` INTO iMid,iMprice,iMflag FROM `Menu` WHERE `Mname1` = LOWER(sMids);
END IF;
IF iMflag <> 2 THEN
WHILE ( iMnums >= 1 ) DO
INSERT INTO `OrderList`(`OIid`,`Mid`,`Mprice`,`Uid`,`Oremark`) VALUES(iOIid,iMid,iMprice,Uids,sOremarks);
SELECT ( iMnums - 1 ) INTO iMnums;
END WHILE;
ELSE
INSERT INTO `OrderList`( `OIid`,`Mid`,`Mprice`,`Oratio`,`Uid`,`Oremark`) VALUES(iOIid,iMid,iMprice,iMnums,Uids,sOremarks);
END IF;
END IF;
SELECT (iCount + 1) INTO iCount;
END WHILE;
ELSEIF iFirst > 0 THEN -- JIA CAI
SELECT `OIid` INTO iOIid FROM `OrderInfo` WHERE ( `Did` = Dids ) AND ( `Ostatus` = 0 );
SELECT ( LENGTH(Mids) - LENGTH(REPLACE(Mids,',','')) + 1 ) INTO iLength;
SET iCount = 1;
WHILE iCount <= iLength DO
SELECT ( CONCAT(Mids,',') ) INTO Mids;
SELECT ( CONCAT(Mnums,',') ) INTO Mnums;
SELECT ( CONCAT(Oremarks,',') ) INTO Oremarks;
IF( iCount = 1 ) THEN
SELECT SUBSTRING(Mids,1,POSITION(',' IN Mids) - 1) INTO sMids;
SELECT SUBSTRING(Mnums,1,POSITION(',' IN Mnums) - 1) INTO iMnums;
SELECT SUBSTRING(Oremarks,1,POSITION(',' IN Oremarks) - 1) INTO sOremarks;
SELECT funIsNum(sMids) INTO isNum;
IF( isNum = 1 ) THEN
SELECT `Mprice`,`Mflag` INTO iMprice,iMflag FROM `Menu` WHERE `Mid` = sMids;
SELECT CAST(sMids AS SIGNED) INTO iMid;
ELSE
SELECT `Mid`,`Mprice`,`Mflag` INTO iMid,iMprice,iMflag FROM `Menu` WHERE `Mname1` = LOWER(sMids);
END IF;
IF iMflag != 2 THEN
WHILE ( iMnums >= 1 ) DO
INSERT INTO `OrderList`(`OIid`,`Mid`,`Mprice`,`Uid`,`Oremark`,`Oflag`) VALUES(iOIid,iMid,iMprice,Uids,sOremarks,1);
SELECT ( iMnums - 1 ) INTO iMnums;
END WHILE;
ELSE
INSERT INTO `OrderList`( `OIid`,`Mid`,`Mprice`,`Oratio`,`Uid`,`Oremark`,`Oflag`) VALUES(iOIid,iMid,iMprice,iMnums,Uids,sOremarks,1);
END IF;
ELSEIF ( iCount <= iLength ) THEN
SELECT SUBSTRING(Mids,POSITION(',' IN Mids) + 1,LENGTH(Mids)) INTO strMids;
SELECT SUBSTRING(Mnums,POSITION(',' IN Mnums) + 1,LENGTH(Mnums)) INTO strMnums;
SELECT SUBSTRING(Oremarks,POSITION(',' IN Oremarks) + 1,LENGTH(Oremarks)) INTO strOremarks;
WHILE (iNum < iCount - 1) DO
SELECT SUBSTRING(strMids,POSITION(',' IN strMids) + 1,LENGTH(strMids)) INTO strMids;
SELECT SUBSTRING(strMnums,POSITION(',' IN strMnums) + 1,LENGTH(strMnums)) INTO strMnums;
SELECT SUBSTRING(strOremarks,POSITION(',' IN strOremarks) + 1,LENGTH(strOremarks)) INTO strOremarks;
SELECT (iNum + 1) INTO iNum;
END WHILE;
SET iNum = 1;
SELECT SUBSTRING(strMids,1,POSITION(',' IN strMids) - 1) INTO sMids;
SELECT SUBSTRING(strMnums,1,POSITION(',' IN strMnums) - 1) INTO iMnums;
SELECT SUBSTRING(strOremarks,1,POSITION(',' IN strOremarks) - 1) INTO sOremarks;
SELECT funIsNum(sMids) INTO isNum;
IF( isNum = 1 ) THEN
SELECT `Mprice`,`Mflag` INTO iMprice,iMflag FROM `Menu` WHERE `Mid` = sMids;
SELECT CAST(sMids AS SIGNED) INTO iMid;
ELSE
SELECT `Mid`,`Mprice`,`Mflag` INTO iMid,iMprice,iMflag FROM `Menu` WHERE `Mname1` = LOWER(sMids);
END IF;
IF iMflag <> 2 THEN
WHILE ( iMnums >= 1 ) DO
INSERT INTO `OrderList`(`OIid`,`Mid`,`Mprice`,`Uid`,`Oremark`,`Oflag`) VALUES(iOIid,iMid,iMprice,Uids,sOremarks,1);
SELECT ( iMnums - 1 ) INTO iMnums;
END WHILE;
ELSE
INSERT INTO `OrderList`( `OIid`,`Mid`,`Mprice`,`Oratio`,`Uid`,`Oremark`,`Oflag`) VALUES(iOIid,iMid,iMprice,iMnums,Uids,sOremarks,1);
END IF;
END IF;
SELECT (iCount + 1) INTO iCount;
END WHILE;
END IF; -- iFirst END
ELSEIF Nstatus = 1 THEN -- TT && NOT TC -- -----------------------------------------TT NOT CT START
SET ii = 1;
SET mm = 1;
SELECT ( LENGTH(Dids) - LENGTH(TRIM(REPLACE(Dids,',',''))) + 1 ) INTO iCount1;
SELECT CONCAT(Dids,',') INTO Dids;
SELECT ( CONCAT(Mids,',') ) INTO Mids;
SELECT ( CONCAT(Mnums,',') ) INTO Mnums;
SELECT ( CONCAT(Oremarks,',') ) INTO Oremarks;
WHILE (mm <= iCount1) DO
IF mm = 1 THEN
SELECT SUBSTRING(Dids,1,POSITION(',' IN Dids) - 1) INTO iDid;
SELECT CONCAT(N'P',SUBSTRING(NOW()+0,1,14),SUBSTRING(RAND(),3,3)) INTO sOrids;
UPDATE `DingingTable` SET `Dstatus` = 3 WHERE ( `Did` = iDid ) AND ( `Dstatus` IN (1,2) );
INSERT INTO `OrderInfo`( `Orid`,`Did`,`Onum`,`Uid` ) VALUES( sOrids,iDid,Onums,Uids );
SELECT LAST_INSERT_ID() INTO iOIid FROM `OrderInfo` LIMIT 1;
SELECT ( LENGTH(Mids) - LENGTH(REPLACE(Mids,',',''))) INTO iLength;
SET iCount = 1;
WHILE iCount <= iLength DO
IF( iCount = 1 ) THEN
SELECT SUBSTRING(Mids,1,POSITION(',' IN Mids) - 1) INTO sMids;
SELECT SUBSTRING(Mnums,1,POSITION(',' IN Mnums) - 1) INTO iMnums;
SELECT SUBSTRING(Oremarks,1,POSITION(',' IN Oremarks) - 1) INTO sOremarks;
SELECT funIsNum(sMids) INTO isNum;
IF( isNum = 1 ) THEN
SELECT `Mprice`,`Mflag` INTO iMprice,iMflag FROM `Menu` WHERE `Mid` = sMids;
SELECT CAST(sMids AS SIGNED) INTO iMid;
ELSE
SELECT `Mid`,`Mprice`,`Mflag` INTO iMid,iMprice,iMflag FROM `Menu` WHERE `Mname1` = LOWER(sMids);
END IF;
IF iMflag != 2 THEN
WHILE ( iMnums >= 1 ) DO
INSERT INTO `OrderList`(`OIid`,`Mid`,`Mprice`,`Uid`,`Oremark`) VALUES(iOIid,iMid,iMprice,Uids,sOremarks);
SELECT ( iMnums - 1 ) INTO iMnums;
END WHILE;
ELSE
INSERT INTO `OrderList`( `OIid`,`Mid`,`Mprice`,`Oratio`,`Uid`,`Oremark`) VALUES(iOIid,iMid,iMprice,iMnums,Uids,sOremarks);
END IF;
ELSEIF ( iCount <= iLength ) THEN
SELECT SUBSTRING(Mids,POSITION(',' IN Mids) + 1,LENGTH(Mids)) INTO strMids;
SELECT TRIM(SUBSTRING(Mnums,POSITION(',' IN Mnums) + 1,LENGTH(Mnums))) INTO strMnums;
SELECT SUBSTRING(Oremarks,POSITION(',' IN Oremarks) + 1,LENGTH(Oremarks)) INTO strOremarks;
WHILE (iNum < iCount - 1) DO
SELECT SUBSTRING(strMids,POSITION(',' IN strMids) + 1,LENGTH(strMids)) INTO strMids;
SELECT TRIM(SUBSTRING(strMnums,POSITION(',' IN strMnums) + 1,LENGTH(strMnums))) INTO strMnums;
SELECT SUBSTRING(strOremarks,POSITION(',' IN strOremarks) + 1,LENGTH(strOremarks)) INTO strOremarks;
SELECT (iNum + 1) INTO iNum;
END WHILE;
SET iNum = 1;
SELECT SUBSTRING(strMids,1,POSITION(',' IN strMids) - 1) INTO sMids;
SELECT SUBSTRING(strMnums,1,POSITION(',' IN strMnums) - 1) INTO iMnums;
SELECT SUBSTRING(strOremarks,1,POSITION(',' IN strOremarks) - 1) INTO sOremarks;
SELECT funIsNum(sMids) INTO isNum;
IF( isNum = 1 ) THEN
SELECT `Mprice`,`Mflag` INTO iMprice,iMflag FROM `Menu` WHERE `Mid` = sMids;
SELECT CAST(sMids AS SIGNED) INTO iMid;
ELSE
SELECT `Mid`,`Mprice`,`Mflag` INTO iMid,iMprice,iMflag FROM `Menu` WHERE `Mname1` = LOWER(sMids);
END IF;
IF iMflag <> 2 THEN
WHILE ( iMnums >= 1 ) DO
INSERT INTO `OrderList`(`OIid`,`Mid`,`Mprice`,`Uid`,`Oremark`) VALUES(iOIid,iMid,iMprice,Uids,sOremarks);
SELECT ( iMnums - 1 ) INTO iMnums;
END WHILE;
ELSE
INSERT INTO `OrderList`( `OIid`,`Mid`,`Mprice`,`Oratio`,`Uid`,`Oremark`) VALUES(iOIid,iMid,iMprice,iMnums,Uids,sOremarks);
END IF;
END IF;
SELECT (iCount + 1) INTO iCount;
END WHILE;
ELSEIF mm <= iCount1 THEN
SELECT TRIM(SUBSTRING(Dids,POSITION(',' IN Dids) + 1,LENGTH(Dids))) INTO strDids;
WHILE ( ii < (mm - 1) ) DO
SELECT TRIM(SUBSTRING(strDids,POSITION(',' IN strDids) + 1,LENGTH(strDids))) INTO strDids;
SELECT (ii + 1) INTO ii;
END WHILE;
SET ii = 1;
SELECT SUBSTRING(strDids,1,POSITION(',' IN strDids) - 1) INTO iDid;
UPDATE `DingingTable` SET `Dstatus` = 3 WHERE ( `Did` = iDid ) AND ( `Dstatus` IN (1,2) );
INSERT INTO `OrderInfo`( `Orid`,`Did`,`Onum`,`Uid` ) VALUES( sOrids,iDid,Onums,Uids ); -- ============///
SELECT LAST_INSERT_ID() INTO iOIid FROM `OrderInfo` LIMIT 1;
SELECT ( LENGTH(Mids) - LENGTH(REPLACE(Mids,',',''))) INTO iLength;
SET iCount = 1;
WHILE iCount <= iLength DO
IF( iCount = 1 ) THEN
SELECT SUBSTRING(Mids,1,POSITION(',' IN Mids) - 1) INTO sMids;
SELECT SUBSTRING(Mnums,1,POSITION(',' IN Mnums) - 1) INTO iMnums;
SELECT SUBSTRING(Oremarks,1,POSITION(',' IN Oremarks) - 1) INTO sOremarks;
SELECT funIsNum(sMids) INTO isNum;
IF( isNum = 1 ) THEN
SELECT `Mprice`,`Mflag` INTO iMprice,iMflag FROM `Menu` WHERE `Mid` = sMids;
SELECT CAST(sMids AS SIGNED) INTO iMid;
ELSE
SELECT `Mid`,`Mprice`,`Mflag` INTO iMid,iMprice,iMflag FROM `Menu` WHERE `Mname1` = LOWER(sMids);
END IF;
IF iMflag != 2 THEN
WHILE ( iMnums >= 1 ) DO
INSERT INTO `OrderList`(`OIid`,`Mid`,`Mprice`,`Uid`,`Oremark`) VALUES(iOIid,iMid,iMprice,Uids,sOremarks);
SELECT ( iMnums - 1 ) INTO iMnums;
END WHILE;
ELSE
INSERT INTO `OrderList`( `OIid`,`Mid`,`Mprice`,`Oratio`,`Uid`,`Oremark`) VALUES(iOIid,iMid,iMprice,iMnums,Uids,sOremarks);
END IF;
ELSEIF ( iCount <= iLength ) THEN
SELECT SUBSTRING(Mids,POSITION(',' IN Mids) + 1,LENGTH(Mids)) INTO strMids;
SELECT TRIM(SUBSTRING(Mnums,POSITION(',' IN Mnums) + 1,LENGTH(Mnums))) INTO strMnums;
SELECT SUBSTRING(Oremarks,POSITION(',' IN Oremarks) + 1,LENGTH(Oremarks)) INTO strOremarks;
WHILE (iNum < iCount - 1) DO
SELECT SUBSTRING(strMids,POSITION(',' IN strMids) + 1,LENGTH(strMids)) INTO strMids;
SELECT TRIM(SUBSTRING(strMnums,POSITION(',' IN strMnums) + 1,LENGTH(strMnums))) INTO strMnums;
SELECT SUBSTRING(strOremarks,POSITION(',' IN strOremarks) + 1,LENGTH(strOremarks)) INTO strOremarks;
SELECT (iNum + 1) INTO iNum;
END WHILE;
SET iNum = 1;
SELECT SUBSTRING(strMids,1,POSITION(',' IN strMids) - 1) INTO sMids;
SELECT SUBSTRING(strMnums,1,POSITION(',' IN strMnums) - 1) INTO iMnums;
SELECT SUBSTRING(strOremarks,1,POSITION(',' IN strOremarks) - 1) INTO sOremarks;
SELECT funIsNum(sMids) INTO isNum;
IF( isNum = 1 ) THEN
SELECT `Mprice`,`Mflag` INTO iMprice,iMflag FROM `Menu` WHERE `Mid` = sMids;
SELECT CAST(sMids AS SIGNED) INTO iMid;
ELSE
SELECT `Mid`,`Mprice`,`Mflag` INTO iMid,iMprice,iMflag FROM `Menu` WHERE `Mname1` = LOWER(sMids);
END IF;
IF iMflag <> 2 THEN
WHILE ( iMnums >= 1 ) DO
INSERT INTO `OrderList`(`OIid`,`Mid`,`Mprice`,`Uid`,`Oremark`) VALUES(iOIid,iMid,iMprice,Uids,sOremarks);
SELECT ( iMnums - 1 ) INTO iMnums;
END WHILE;
ELSE
INSERT INTO `OrderList`( `OIid`,`Mid`,`Mprice`,`Oratio`,`Uid`,`Oremark`) VALUES(iOIid,iMid,iMprice,iMnums,Uids,sOremarks);
END IF;
END IF;
SELECT (iCount + 1) INTO iCount;
END WHILE;
END IF;
SELECT (mm + 1) INTO mm;
END WHILE;
END IF; -- Nstatus end;
ELSEIF Oflags = 1 THEN -- TC --------------------START ================================
IF Nstatus = 0 THEN -- ONE PERSON KAIDAN
SELECT Mids INTO iBLid;
SELECT CONCAT(N'T',SUBSTRING(NOW()+0,1,14),SUBSTRING(RAND(),3,3)) INTO sOrids;
UPDATE `DingingTable` SET `Dstatus` = 3 WHERE ( `Did` = Dids ) AND ( `Dstatus` IN (1,2) );
INSERT INTO `OrderInfo`( `Orid`,`Did`,`Onum`,`BLid`,`Uid`,`Oflag` ) VALUES( sOrids,Dids,Onums,iBLid,Uids,1 );
SELECT LAST_INSERT_ID() INTO iOIid FROM `OrderInfo` LIMIT 1;
-- insert OrderList CT
SELECT funGetMidBnumByBLid(iBLid) INTO strResult;
SELECT SUBSTRING(strResult,1,POSITION(':' IN strResult) - 1) INTO strMids;
SELECT SUBSTRING(strResult,POSITION(':' IN strResult) + 1,LENGTH(strResult)) INTO strBnum;
SELECT ( LENGTH(strMids) - LENGTH(REPLACE(strMids,',',''))) INTO iLength;
SET iCount1 = 1;
WHILE(iCount1 <= iLength) DO
IF iCount1 = 1 THEN
SELECT cast(SUBSTRING(strMids,1,POSITION(',' IN strMids) - 1) as SIGNED) INTO iMid;
SELECT cast(SUBSTRING(strBnum,1,POSITION(',' IN strBnum) - 1) as SIGNED) INTO iBnum;
SELECT `Mprice`,`Mflag` INTO iMprice,iMflag FROM `Menu` WHERE `Mid` = iMid;
IF iMflag <> 2 THEN
WHILE iBnum >= 1 DO
INSERT INTO `OrderList`(`OIid`,`Mid`,`Mprice`,`Uid`) VALUES(iOIid,iMid,iMprice,Uids);
SELECT ( iBnum - 1 ) INTO iBnum;
END WHILE;
ELSE
INSERT INTO `OrderList`( `OIid`,`Mid`,`Mprice`,`Oratio`,`Uid`) VALUES(iOIid,iMid,iMprice,iBnum,Uids);
END IF;
ELSEIF iCount1 <= iLength THEN
SELECT SUBSTRING(strMids,POSITION(',' IN strMids) + 1,LENGTH(strMids)) INTO sMid;
SELECT SUBSTRING(strBnum,POSITION(',' IN strBnum) + 1,LENGTH(strBnum)) INTO sBnum;
WHILE (ii < (iCount1 - 1)) DO
SELECT SUBSTRING(sMid,POSITION(',' IN sMid) + 1,LENGTH(sMid)) INTO sMid;
SELECT SUBSTRING(sBnum,POSITION(',' IN sBnum) + 1,LENGTH(sBnum)) INTO sBnum;
SELECT (ii + 1) INTO ii;
END WHILE;
SET ii = 1;
SELECT cast(SUBSTRING(sMid,1,POSITION(',' IN sMid) - 1) as SIGNED) INTO iMid;
SELECT cast(SUBSTRING(sBnum,1,POSITION(',' IN sBnum) - 1) as SIGNED) INTO iBnum;
SELECT `Mprice`,`Mflag` INTO iMprice,iMflag FROM `Menu` WHERE `Mid` = iMid;
IF iMflag <> 2 THEN
WHILE iBnum >= 1 DO
INSERT INTO `OrderList`(`OIid`,`Mid`,`Mprice`,`Uid`) VALUES(iOIid,iMid,iMprice,Uids);
SELECT ( iBnum - 1 ) INTO iBnum;
END WHILE;
ELSE
INSERT INTO `OrderList`( `OIid`,`Mid`,`Mprice`,`Oratio`,`Uid`) VALUES(iOIid,iMid,iMprice,iBnum,Uids);
END IF;
END IF;
SELECT (iCount1 + 1) INTO iCount1;
END WHILE;
ELSEIF Nstatus = 1 THEN -- TUAN TI KAIDAN
SET nn = 1;
SET mm = 1;
SELECT ( LENGTH(Dids) - LENGTH(REPLACE(Dids,',','')) + 1 ) INTO iCount;
WHILE (mm <= iCount) DO
SELECT CONCAT(Dids,',') INTO Dids;
IF mm = 1 THEN
SELECT SUBSTRING(Dids,1,POSITION(',' IN Dids) - 1) INTO iDid;
SELECT Mids INTO iBLid;
SELECT CONCAT(N'T',SUBSTRING(NOW()+0,1,14),SUBSTRING(RAND(),3,3)) INTO sOrids;
UPDATE `DingingTable` SET `Dstatus` = 3 WHERE ( `Did` = iDid ) AND ( `Dstatus` IN (1,2) );
INSERT INTO `OrderInfo`( `Orid`,`Did`,`Onum`,`BLid`,`Uid`,`Oflag` ) VALUES( sOrids,iDid,Onums,iBLid,Uids,1 );
SELECT LAST_INSERT_ID() INTO iOIid FROM `OrderInfo` LIMIT 1;
-- insert OrderList CT
SELECT funGetMidBnumByBLid(iBLid) INTO strResult;
SELECT SUBSTRING(strResult,1,POSITION(':' IN strResult) - 1) INTO strMids;
SELECT SUBSTRING(strResult,POSITION(':' IN strResult) + 1,LENGTH(strResult)) INTO strBnum;
SELECT ( LENGTH(strMids) - LENGTH(REPLACE(strMids,',',''))) INTO iLength;
SET iCount1 = 1;
WHILE(iCount1 <= iLength) DO
IF iCount1 = 1 THEN
SELECT SUBSTRING(strMids,1,POSITION(',' IN strMids) - 1) INTO iMid;
SELECT SUBSTRING(strBnum,1,POSITION(',' IN strBnum) - 1) INTO iBnum;
SELECT `Mprice`,`Mflag` INTO iMprice,iMflag FROM `Menu` WHERE `Mid` = iMid;
IF iMflag <> 2 THEN
WHILE iBnum >= 1 DO
INSERT INTO `OrderList`(`OIid`,`Mid`,`Mprice`,`Uid`) VALUES(iOIid,iMid,iMprice,Uids);
SELECT ( iBnum - 1 ) INTO iBnum;
END WHILE;
ELSE
INSERT INTO `OrderList`( `OIid`,`Mid`,`Mprice`,`Oratio`,`Uid`) VALUES(iOIid,iMid,iMprice,iBnum,Uids);
END IF;
ELSEIF iCount1 <= iLength THEN
SELECT SUBSTRING(strMids,POSITION(',' IN strMids) + 1,LENGTH(strMids)) INTO sMid;
SELECT SUBSTRING(strBnum,POSITION(',' IN strBnum) + 1,LENGTH(strBnum)) INTO sBnum;
WHILE (ii < (iCount1 - 1)) DO
SELECT SUBSTRING(sMid,POSITION(',' IN sMid) + 1,LENGTH(sMid)) INTO sMid;
SELECT SUBSTRING(sBnum,POSITION(',' IN sBnum) + 1,LENGTH(sBnum)) INTO sBnum;
SELECT (ii + 1) INTO ii;
END WHILE;
SET ii = 1;
SELECT SUBSTRING(sMid,1,POSITION(',' IN sMid) - 1) INTO iMid;
SELECT SUBSTRING(sBnum,1,POSITION(',' IN sBnum) - 1) INTO iBnum;
SELECT `Mprice`,`Mflag` INTO iMprice,iMflag FROM `Menu` WHERE `Mid` = iMid;
IF iMflag <> 2 THEN
WHILE iBnum >= 1 DO
INSERT INTO `OrderList`(`OIid`,`Mid`,`Mprice`,`Uid`) VALUES(iOIid,iMid,iMprice,Uids);
SELECT ( iBnum - 1 ) INTO iBnum;
END WHILE;
ELSE
INSERT INTO `OrderList`( `OIid`,`Mid`,`Mprice`,`Oratio`,`Uid`) VALUES(iOIid,iMid,iMprice,iBnum,Uids);
END IF;
END IF;
SELECT (iCount1 + 1) INTO iCount1;
END WHILE;
ELSEIF mm <= iCount THEN
SELECT SUBSTRING(Dids,POSITION(',' IN Dids) + 1,LENGTH(Dids)) INTO strDids;
WHILE (nn < (mm - 1)) DO
SELECT SUBSTRING(strDids,POSITION(',' IN strDids) + 1,LENGTH(strDids)) INTO strDids;
SELECT (nn + 1) INTO nn;
END WHILE;
SET nn = 1;
SELECT SUBSTRING(strDids,1,POSITION(',' IN strDids) - 1) INTO iDid;
SELECT Mids INTO iBLid;
UPDATE `DingingTable` SET `Dstatus` = 3 WHERE ( `Did` = iDid ) AND ( `Dstatus` IN (1,2) );
INSERT INTO `OrderInfo`( `Orid`,`Did`,`Onum`,`BLid`,`Uid`,`Oflag` ) VALUES( sOrids,iDid,Onums,iBLid,Uids,1 );
SELECT LAST_INSERT_ID() INTO iOIid FROM `OrderInfo` LIMIT 1;
-- insert OrderList CT
SELECT funGetMidBnumByBLid(iBLid) INTO strResult;
SELECT SUBSTRING(strResult,1,POSITION(':' IN strResult) - 1) INTO strMids;
SELECT SUBSTRING(strResult,POSITION(':' IN strResult) + 1,LENGTH(strResult)) INTO strBnum;
SELECT ( LENGTH(strMids) - LENGTH(REPLACE(strMids,',',''))) INTO iLength;
SET iCount1 = 1;
WHILE(iCount1 <= iLength) DO
IF iCount1 = 1 THEN
SELECT SUBSTRING(strMids,1,POSITION(',' IN strMids) - 1) INTO iMid;
SELECT SUBSTRING(strBnum,1,POSITION(',' IN strBnum) - 1) INTO iBnum;
SELECT `Mprice`,`Mflag` INTO iMprice,iMflag FROM `Menu` WHERE `Mid` = iMid;
IF iMflag <> 2 THEN
WHILE iBnum >= 1 DO
INSERT INTO `OrderList`(`OIid`,`Mid`,`Mprice`,`Uid`) VALUES(iOIid,iMid,iMprice,Uids);
SELECT ( iBnum - 1 ) INTO iBnum;
END WHILE;
ELSE
INSERT INTO `OrderList`( `OIid`,`Mid`,`Mprice`,`Oratio`,`Uid`) VALUES(iOIid,iMid,iMprice,iBnum,Uids);
END IF;
ELSEIF iCount1 <= iLength THEN
SELECT SUBSTRING(strMids,POSITION(',' IN strMids) + 1,LENGTH(strMids)) INTO sMid;
SELECT SUBSTRING(strBnum,POSITION(',' IN strBnum) + 1,LENGTH(strBnum)) INTO sBnum;
WHILE (ii < (iCount1 - 1)) DO
SELECT SUBSTRING(sMid,POSITION(',' IN sMid) + 1,LENGTH(sMid)) INTO sMid;
SELECT SUBSTRING(sBnum,POSITION(',' IN sBnum) + 1,LENGTH(sBnum)) INTO sBnum;
SELECT (ii + 1) INTO ii;
END WHILE;
SET ii = 1;
SELECT SUBSTRING(sMid,1,POSITION(',' IN sMid) - 1) INTO iMid;
SELECT SUBSTRING(sBnum,1,POSITION(',' IN sBnum) - 1) INTO iBnum;
SELECT `Mprice`,`Mflag` INTO iMprice,iMflag FROM `Menu` WHERE `Mid` = iMid;
IF iMflag <> 2 THEN
WHILE iBnum >= 1 DO
INSERT INTO `OrderList`(`OIid`,`Mid`,`Mprice`,`Uid`) VALUES(iOIid,iMid,iMprice,Uids);
SELECT ( iBnum - 1 ) INTO iBnum;
END WHILE;
ELSE
INSERT INTO `OrderList`( `OIid`,`Mid`,`Mprice`,`Oratio`,`Uid`) VALUES(iOIid,iMid,iMprice,iBnum,Uids);
END IF;
END IF;
SELECT (iCount1 + 1) INTO iCount1;
END WHILE;
END IF;
SELECT (mm + 1) INTO mm;
END WHILE;
END IF; -- TC:Nstatus
END IF; -- Oflags END;
COMMIT;
END $$

DELIMITER ; 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习MATLAB时,编写学习笔记是一种很好的方法,可以帮助您记录重要的概念、语法和技巧,以及解决问题的步骤。以下是一些关于编写MATLAB学习笔记的建议: 1. 组织结构:使用清晰的标题和分节来组织您的学习笔记。将不同的主题分成单独的部分,并使用子标题来进一步细分内容。 2. 内容概要:在每个部分或子标题下,写下该主题的概要。这样可以帮助您回顾和理解该主题的关键点。 3. 示例代码和输出:对于每个主题,包括一些示例代码和相应的输出结果。这有助于您理解和演示具体的MATLAB语法和功能。 4. 问题与解答:如果您在学习过程中遇到了一些困惑或问题,将其记录下来,并在笔记中提出并解答这些问题。这样可以帮助您深入思考并加深对该主题的理解。 5. 笔记补充:除了基本概念和语法外,您还可以添加一些额外的笔记,如最佳实践、编程技巧、常见错误等。这些额外的笔记可以提供更多的实用信息和提示。 6. 参考资料:在您的学习笔记中,包括引用的参考资料,如教程、文档、书籍或网站链接。这样,您可以随时回顾并深入研究相关的主题。 7. 总结和复习:在学习笔记的结尾,添加一个总结部分,回顾和总结您学到的重点和关键概念。此外,定期复习您的学习笔记也是加深理解和记忆的好方法。 以上是关于编写MATLAB学习笔记的一些建议。希望这对您有所帮助,并祝您在MATLAB学习过程中取得成功!如果有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值