drop function if exists test.get_scan_code;
delimiter $
create function `test`.`get_scan_code`(as_code varchar(128))
returns VARCHAR(128)
begin
declare ls_rc VARCHAR(255) DEFAULT '';
declare ls_checkcode VARCHAR(255) DEFAULT '';
declare A,B,C,D,E int default 0;
declare J,K int ;
declare X int ;
declare ls_tmp varchar(128) ;
set as_code=trim(as_code);
set K = 1;
set X = LENGTH(as_code);
set J = X;
WHILE J >= 1 DO
set K = K + 1 ;
set ls_tmp = mid(as_code,J,1);
If mod(K,2)=0 Then
set A = A + (ls_tmp + 0);
ElseIf K>2 and mod(K,2)=1 Then
set C = C + (ls_tmp + 0);
End If;
set J = J - 1;
end while ;
set B = A * 3;
set D = B + C;
set E = 10 - mod(D,10);
set ls_checkcode = CAST(E AS CHAR);
set ls_rc = CONCAT(as_code,ls_checkcode);
return ls_rc;
end$
delimiter
delimiter $
create function `test`.`get_scan_code`(as_code varchar(128))
returns VARCHAR(128)
begin
declare ls_rc VARCHAR(255) DEFAULT '';
declare ls_checkcode VARCHAR(255) DEFAULT '';
declare A,B,C,D,E int default 0;
declare J,K int ;
declare X int ;
declare ls_tmp varchar(128) ;
set as_code=trim(as_code);
set K = 1;
set X = LENGTH(as_code);
set J = X;
WHILE J >= 1 DO
set K = K + 1 ;
set ls_tmp = mid(as_code,J,1);
If mod(K,2)=0 Then
set A = A + (ls_tmp + 0);
ElseIf K>2 and mod(K,2)=1 Then
set C = C + (ls_tmp + 0);
End If;
set J = J - 1;
end while ;
set B = A * 3;
set D = B + C;
set E = 10 - mod(D,10);
set ls_checkcode = CAST(E AS CHAR);
set ls_rc = CONCAT(as_code,ls_checkcode);
return ls_rc;
end$
delimiter