想写这样一个存储过程:前台用户输入username 和password ,通过存储过程判断oracle的用户里(注:是oracle默认用户表)是否存在这个用户名,存在的话输入的密码是否正确。这个存储过程返回boolen(存在则TRUE)值

解决方案 »

  1.   


    Oracle里的用户信息在表dba_users中,但是密码是加密的。估计很难实现这个功能。
      

  2.   

    oracle用户是加密的,不知道加密函数是什么,可以建立一个映射表
    明文,密码
      

  3.   

    我这样写对吗:
    create or replace procedure login_pro (
          uname in varchar2,
          pwd in varchar2,
          flag out Boolean
    )
    as
    u_check number;
    p_check number;
    begin
         select count(1) into u_check from dba_uses where username =uname;
         if u_check >0 then
            select count(1) into p_check from dba_users where username = uname and password =pwd;
            if(p_check>0) then
                flag :=true;
            else
               flag :=flase;
            end if;     else
             flag :=flase;
         end if;end login_pro;
      

  4.   

    密码是经过加密算法的啊!楼上这个select .... password=pwd 行么?
      

  5.   

    到是可以判断存在此用户 但是密码匹配有点难度 因为里面的 dba_users中的密码字段是处理后显示的密码要么用审计
      

  6.   

    密码是要经过加密 再比较的..现在我执行这个存储过程 报 错:表或视图不存在 意思是这个dba_users找不到
    select count(1) into u_check from  DBA_USERS where username =uname;这句有误
      

  7.   


    你执行的这个用户没有dba_users表访问权限。
      

  8.   

    楼主可能不行吧,Oracle中用户密码都是经常加密的,查看默认用户表中可以看得到密码都是加密过的,因此按照你的需求,可能要先通过对密码解密后再判断吧