drop procedure if exists removeProposalLabels; delimiter # create procedure removeProposalLabels ( params JSON ) begin declare trello_id varchar(10) character set utf8; declare labels varchar(500) character set utf8; declare loop_index int default 0; declare label_id int; -- log 錯誤訊息 declare exit handler for sqlexception begin GET DIAGNOSTICS CONDITION 1 @error_code = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT; rollback; insert into log_sql (log) values(@error_msg); RESIGNAL; end;
set trello_id = JSON_UNQUOTE(JSON_EXTRACT(params, '$.trello_id')); set labels = JSON_EXTRACT(params, '$.labels');
start transaction; while loop_index < JSON_LENGTH(labels) DO set label_id = JSON_EXTRACT(labels,CONCAT('$[',loop_index,']')); delete from proposal_label_mapping where proposal_label_mapping.trello_id = trello_id and proposal_label_mapping.label_id = label_id;
select loop_index + 1 into loop_index; end while; commit; end#