17,377
社区成员
发帖
与我相关
我的任务
分享
SQL>
SQL> create or replace function convertPwdToAscII(userCode in varchar2)
2 return varchar2 is
3 strPwd varchar2(20);
4 splits varchar2(100);
5 i number;
6 Begin
7 select user_pass into strPwd from tuser where user_code := userCode;
8 while i < length(strPwd) loop
9 select ascii(substr(strPwd, 0, i)) into splits from dual;
10 splits := splits || ",";
11 end loop;
12 return splits;
13 End;
14 /
--你的很多错误,这里我改了,有些事你自己的逻辑,你再增加进去
--下面是单纯的求ascii
create or replace function convertPwdToAscII(userCode in varchar2) --参数不需要指定长度
return varchar2
is
result varchar2(100); --变量申明写在这里!
split VARCHAR2(100);
i number := 0;
Begin
--select user_pass into strPwd from tuser where user_code = userCode;
for i IN 1.. length(userCode) LOOP
select ascii(substr(userCode,i,1)) into split from dual; --这里变量要用substr(str,i,1) 并且语句结束用逗号!
result := result||split || ','; --这里又错!
end loop;
return RTrim(result,',');
End;
测试:
SELECT convertPwdToAscII('123456') FROM dual;
结果:
CONVERTPWDTOASCII('123456')
-------------------
49,50,51,52,53,54
create or replace function convertPwdToAscII(userCode in varchar2)
return varchar2
is
strPwd varchar2(20);
split varchar2(100);
i pls_integer := 0;
Begin
select user_pass into strPwd from tuser where user_code = userCode;
while i < length(strPwd) loop
select ascii(substr(strPwd,0,i)) into split from dual;
split := split + ",";
end loop;
return split;
End;