当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
NTier体系结构解决方案(二)
发布时间:2010/11/24 16:23:30 来源:www.xue.net 编辑:城市总裁吧
    上面的这个Procedure中定义了一个中间的变量tmp_pass,使用这个中间变量来保存第一个Select into语句选出的数据库中的旧有密码,然后用它和用户的输入做比较,如果是正确的就执行更新的过程,否则返回一个用于判断的过程值。为什么要用Select into呢?这是因为在Procedure中不支持选出一个记录集,而Select into其实是一个隐含的Cursor,所以我们还可以这样来实现刚才的这个Procedure: 
  
  Create or Replace Procedure proc_pass_change 
  
  ( member_id in varchar2, 
  
  org_pass in varchar2, 
  
  new_pass in varchar2, 
  
  status out number ‘status是一个标志量,当为0时表示成功,1代表旧密码不符,其它的值代表过程出错。 
  
   )is 
  
  Cursor csr_pass is 
  
  Select mem_pass from personal_beadroll 
  
  Where mem_id=member_id and mem_pass=org_pass; 
  
  begin 
  
  open csr_pass; 
  
  if csr_pass%FOUND then 
  
  update mem_pass=new_pass from personal_beadroll 
  
  where mem_id=member_id; 
  
  status:=0; 
  
  else 
  
  status:=1; 
  
  end if; 
  
  commit; 
  
  close csr_pass; 
  
  exception 
  
  when others then 
  
  rollback; 
  
  status:=2; 
  
  raise; 
  
  end; 
  
  它的实现思想是,首先我们产生一个密码和ID都符合的记录集,若这个记录集存在的话,就证明了该用户输入的原始密码有效,此时csr_pass%FOUND条件为真,于是我们就可以进行密码的更新工作了。 
  
  从上面的例子我们可以看到,当我们的事务是复杂的SQL语句时,我们使用Procedure的优越性是明显的。
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved