请帮我把下面的函数改写成这样的功能
如UserCode ='123456'
转换成Ascii的 49,50,51,52,53,54create or replace function convertPwdToAscII(userCode in varchar2(20))
return varchar2
is 
Begin
     strPwd varchar2(20);
     split varchar2(100);
     select user_pass into strPwd from tuser where user_code = userCode;
     int i := 0;
     while i < length(@strPwd)
           select ascii(substr(strPwd,0,i)) into split from dual
           split = split + ",";
     end loop;
    return  split;
End;

解决方案 »

  1.   


    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;
      

  2.   


    --你的很多错误,这里我改了,有些事你自己的逻辑,你再增加进去
    --下面是单纯的求asciicreate 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
      

  3.   

    create or replace function convertPwdToAscII(userCode in varchar2(20))
    return varchar2
    is  
    Begin
      strPwd varchar2(20);
      split varchar2(100);
      select user_pass into strPwd from tuser where user_code = userCode;
      int i := 0;
      while i < length(@strPwd)
      select ascii(substr(strPwd,i,1)) into split from dual
      split = split + ",";
      i:=i+1;
      end loop;
      return split;
    End;
      

  4.   


    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  /