注册

您好,我用for循环的游标SUBSTRING出错

Cat 2024/10/12 419 4 已解决

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: 8
【操作系统】:win
【CPU】: Intel
【问题描述】*:

create or replace function f_decodepay(f in number) return number as v_key varchar(50); v_t varchar(1000); -- 结果数字 v_ft varchar(1000); -- 需要解密的数字的字符串 v_c varchar(1); v_temp number; v_temp2 number; v_i2 integer; v_flag varchar(1); v_ft_length integer; v_i integer; begin v_key:='384962867' ; -- from b2x701nk by: String secretNumKey = String.valueOf(java.lang.Math.abs("b2x701nk".hashCode())); v_t := ''; v_ft := convert(varchar , f); v_flag := case when substr(v_ft,0 ,1) = '-' then '-' else '' end ; v_ft := case when substr(v_ft,0 ,1) = '-' then substr(v_ft, 1) else v_ft end; v_ft_length := length(v_key); for v_ix in (select v_ft_length) loop v_i := convert(int, v_ix); v_c := SUBSTRING(v_ft, v_i , 1) ; v_i2 := case when v_i < v_ft_length then v_i else 0 end; v_temp := to_number(substr(v_ft,v_i2 ,1)) ^ to_number(substr(v_key,v_i2 ,1)) ; v_temp2 := to_number(substr(v_ft,v_i2 ,1)) - 48; v_temp := case when v_temp < 10 then v_temp else v_temp2 end ; v_c := '' ; -- case when '.' != v_c && i < v_ft_length then convert(varchar, v_temp ) else v_c end; v_t := concat(v_t, v_c); end loop; return concat(v_flag, v_t); end

convert(int, v_ix); 提示 参数类型错误,
直接用 SUBSTRING(v_ft, v_ix, 1) ; 也提示参数类型错误
是因为for循环里 v_ix不是int么? 如何处理啊

回答 0
暂无回答
扫一扫
联系客服