MySql 5.0后的版本可以支持存储过程了。正好工作需要,研究了一下,并随手做一下记录。
同样以程序来分析
DELIMITER $$ - - 这句意思为 遇到$$,执行 这之前的语句
USE `数据库名`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `过程名`(IN parabarcode VARCHAR(25),OUT Sequence INT)
-- 不需要写AS
BEGIN
-- 定义变量 ,变量前不要用@
DECLARE tmpSerial INT;
DECLARE tmpOrderNo VARCHAR(25);
DECLARE tmpConditionCode VARCHAR(10);
-- select语句中,赋值用into
SELECT OrderId INTO tmpOrderNo FROM pl_barcodeinfo WHERE BarcodeNo = parabarcode;
SELECT MAX(ExprotSequence),ConditionCode
INTO tmpSerial,tmpConditionCode
FROM pl_orderinfo WHERE OrderNo =tmpOrderNo FOR UPDATE; -- 行锁
SET Sequence = tmpSerial;
UPDATE pl_orderinfo SET ExprotSequence=tmpSerial+1 WHERE ConditionCode=tmpConditionCode;
COMMIT; --事务提交
END$$
DELIMITER ;
另注意,mysql不同于mssql有返过程返回值,mysql是没有的,只能通过参数返回。