欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

写个存储过程,不知道如何写

更新时间: 2014-01-05 02:13:38 责任编辑: Author_N1

 

写个存储过程,不知道怎么写
让a_person表中昵称为空的用户,(字段你们可以见名之意的定义就好)用他的手机号码后10位作为昵称,如果用户手机号为空,则用用户的邮箱作为昵称,其中邮箱是不能为空的,而且手机号码是用base64加密的,需要解密,这个存储过程怎么写?
--参考方法--
UPDATE a_person p
   SET p.avatar = nvl2(mobi_number, SUBSTR(utl_encode.base64_decode(hextoraw(mobi_number)),-10), email)
 WHERE p.avatar IS NULL;

--参考方法--
create or replace procedure you_pro_name(RetMemo out varchar2 --返回信息
                                                 )
is
 v_nicheng    varchar2(20);--id 为a_person主键
 v_count number;
 cursor c_find is
 select * from a_person;
 cc c_find%rowtype;
begin
  RetMemo :='';
  v_count :=0;
  open c_find;
      loop
          fetch c_find into cc;
          exit when c_find%notfound;
          if cc.nicheng is null then
           if cc.phone is null then
             v_nicheng :=cc.mail;
             else
               v_nicheng :=substr(utl_raw.cast_to_varchar2(utl_encode.base64_decode(utl_raw.cast_to_raw(cc.phone))),-10);
              end if; 
                 update a_person set nicheng=v_nicheng where id = cc.id;
                 commit;    
                 v_count :=v_count+1;    
                   end if;       
         end loop;
         close c_find;
         RetMemo:=RetMemo
--参考方法--
'更新了'
--参考方法--
v_count
--参考方法--
'条数据';
exception
   when others then
     begin
      rollback;
      RetMemo := sqlerrm;
      return;
     end;
end;


差不多是这个样子吧
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:13:38
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7177/
本文WWW.DOC100.NET DOC100.NET版权所有。