#参数分为“IN、OUT、INOUT”,IN是输入参数,在存储过程中不可修改,OUT是输出参数,INOUT是输入输出参数
CREATE DEFINER=`sa`@`192.168.1.8%` PROCEDURE `p_materialPlanChange`(IN `p_projectId` varchar(32), IN `p_applicantAccount` varchar(20), OUT `p_flag` int)
BEGIN
#当前日期
declare v_curr_date VARCHAR(10); #mysql中声明变量时,没有类似于oracle里面的rowtype方式
#当前时间
declare v_curr_time VARCHAR(19);
#异常声明
DECLARE done INT DEFAULT 0; #循环退出时需要用到,否则会报错
#游标声明
declare v_procurement_cur cursor for
select tp.id, tp.CurrentStep, tp.CurrentStepID, tp.CurrentStepTime, tp.ProcedureState
from t_procurement tp
where tp.ProjectID=p_projectId
#异常
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
#打开游标
open v_procurement_cur;
#循环执行
REPEAT
fetch v_procurement_cur
into v_procurementId, v_CurrentStep, v_CurrentStepId, v_CurrentStepTime, v_ProcedureState;
if not done then
#业务处理
..............
end if;
UNTIL done END REPEAT; #退出循环
#关闭游标
close v_procurement_cur;
#设置当前日期值格式:("yyyy-MM-dd")
set v_curr_date = DATE_FORMAT(CURRENT_DATE(),'%Y-%m-%d');
#设置当前时间格式:("yyyy-MM-dd HH:mm:ss")
set v_curr_time = DATE_FORMAT(NOW(), '%Y-%m-%d %T');
#相关业务处理
........
end