代碼
LABEL_PROC:
BEGIN
-- 任務表關聯時使用的key值
DECLARE v_faxkey VARCHAR(50) default '';
-- 任務表中的傳真狀態
DECLARE v_taskstate int default 0;
DECLARE v_ID int default 0;
DECLARE v_userName VARCHAR(50) default '';
DECLARE done INT DEFAULT 0;
DECLARE cur1 CURSOR FOR SELECT ID FROM childfax where ParentId=p_id;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
-- 如果id不在合法範圍,直接返回-1
if( p_id<=0 ) then
select -1 into result;
leave LABEL_PROC;
end if;
-- id 指定記錄不存在,直接返回 -2
if(not exists(select * from parentfax where id=p_id) ) then
select -2 into result;
leave LABEL_PROC;
end if;
if(select count(*) from faxtask where ParentId = p_id and status=1 > 0) then
select -3 into result;
select '正在發送中,不能刪除';
leave LABEL_PROC;
end if;
-- 設定子傳真會刪除狀態
UPDATE childfax set faxstate=-1 where ParentId=p_id;
-- 設定份傳真為刪除狀態
UPDATE parentfax set FaxState=-1 where id=p_id;
-- 刪除任務表中資料
delete from faxtask where parentid = p_id;
OPEN cur1;
REPEAT
FETCH cur1 INTO v_ID;
IF NOT done THEN
select username into v_userName from user_childfax_view where id=v_ID;
call pro_add_log(v_ID,2,concat(v_userName,' 刪除') );
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
-- 返回執行成功結果
select 1 into result;
END LABEL_PROC