在oracle10g中怎么样写个存储过程来实现用户名和密码的验证,并且返回一个Boolean结果,给调用者,,,请指教?????

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE YANZHENG
    (
    C_NAME VARCHAR2,--用户名称
    C_PASSWORD  VARCHAR2,---用户密码
    FLAG OUT NUMBER) --返回状态0表示错误,1表示存在)
    IS
    COUNTS NUMBER;
    PCOUNTS NUMBER;
    BEGIN
    SELECT COUNT(*) INTO COUNTS FROM USER WHERE USERNAME=C_NAME;
    IF COUNTS>0 THEN
    SELECT COUNT(*) INTO PCOUNTS FROM USER WHERE PASSWORD=C_PASSWORD;
    IF PCOUNTS>0 THEN
    FLAG:=1;
    END IF;
    ELSE
    FLAG:=0;
    END IF;
    END  YANZHENG;
    这是个简单的,抛砖引玉~~~一
    般这种考虑到安全以及其他方面是在程序中判断的,所以建议不要这样用
      

  2.   

    这样的程序签名,该怎么写过程呢???,请指教!
    procedure logvalidate(v_ename employee.logname%type,
                          v_password employee.password%type,
                          v_result out boolean)
    验证用户登录是否合法
      

  3.   

    那也不对啊,你的out参数,不是Boolean的啊,
      

  4.   

    procedure writechat(v_sour chatlog.source%type,
    v_target chatlog.target%type,
    v_msg chatlog.msg%type,
    v_type chatlog.msgtype%type,
    v_stat chatlog.status%type
    )将用户发送的消息记录到数据库中该怎么写啊姐姐
      

  5.   

     oracle里面没有Boolean类型????
      

  6.   

    create or replace procedure writechat(v_sour chatlog.source%type,
    v_target chatlog.target%type,
    v_msg chatlog.msg%type,
    v_type chatlog.msgtype%type,
    v_stat chatlog.status%type)is 
    begin
    select source,target,msg,msgtype,status into v_sour,v_target,v_msg,v_type,v_stat from employee;上面我的问题这样写对 吗》?请高手告诉下啊 ,,,
      

  7.   

    写错了。create or replace procedure writechat(
    v_sour IN chatlog.source%type, --IN不写可以的,没写IN/OUT默认是IN
    v_target IN chatlog.target%type,
    v_msg IN chatlog.msg%type,
    v_type IN chatlog.msgtype%type,
    v_stat IN chatlog.status%type)is
    begin
    --直接insert即可。
    insert into employee(source,target,msg,msgtype,status) values(v_sour,v_target,v_msg,v_type,v_stat);
    --出错则抛出给调用方
    exception when others then
     raise;
    end;
    /
      

  8.   


    大家在帮我看下我下面写的对 吗??多谢了
    --3,未发送信息获取
    create or replace procedure readnondelivery(v_target chatlog.target%type,
    v_result out sys_refcursor)
    is
    begin
    open v_result for select * from chatlog where target=v_target;
    end;
    --获取指定用户尚未接收的消息--4,员工签到、签退
    create or replace procedure log_manage(v_user emplog.username%type,
    v_oper emplog.operat%type)
    is 
    begin
    select username,operat into v_user,v_oper from emplog where in ('login','logout');
    end;
    --实现员工签到或是签退信息的记录
      

  9.   


    --5,用户信息写入
    create or replace procedure writeinformation(v_logname employee.logname%type,
    v_username employee.username%type,
    v_password employee.password%type,
    v_birthday employee.birthday%type,
    v_constellation employee.constellation%type,
    v_taste employee.taste%type,
    v_dept employee.department%type,
    v_ext employee.extension%type,
    v_purview employee.purview%type,
    v_directory employee.directory%type)
    is
    begin
    insert into employee(logname,username,password,birthday,constellation,taste,dept,ext,purview,directory) values(v_logname,v_username,v_password,v_birthday,v_constellation,v_taste,v_dept,v_ext,v_purview,v_directory);
    end;
    --将用户的信息保存到对应的表中--6,用户信息读取
    create or replace procedure getinformation(v_logname employee.logname%type,
    v_result out sys_refcursor)
    is
    begin
    open v_result for select * from employee where logname=v_logname;
    end;
    --获取指定用户的信息--7,更新用户信息
    create or replace procedure updateinformation(v_logname employee.logname%type,
    v_newbirthday employee.birthday%type,
    v_oldbirthday employee.birthday%type,
    v_newpassword employee.password%type,
    v_oldpassword employee.password%type,
    v_newconstellation employee.constellation%type,
    v_oldconstellation employee.constellation%type,
    v_newtaste employee.taste%type,
    v_oldtaste employee.taste%type)
    is 
    begin
    这个该怎么写啊??
    end;
    --更新指定用户的个人信息--8,文件操作记录
    create or replace procedure writefilelog(v_operator fileoperate.operator%type,
    v_filename fileoperate.filename%type,
    v_operdirectory fileoperate.operdirectory%type,
    v_operattype fileoperate.operattype%type)
    is 
    begin
    select operator,filename,operdirectory,operattype into v_operator,v_filename,v_operdirectory,v_operattype from fileoperate where in ('pri','deptpub','pub') and operattype in ('upload','down'); 
    end;
    --实现文件上传或下载过程的记录--9.用户权限获取
    create or replace procedure getpurview(v_logname employee.logname%type,
    v_purview out number)
    is 
    v_purview number(2);
    begin
    select purview into v_purview from employee where logname=v_logname;
    end;
    --获取用户的权限值--10,获取私人文件路径
    create or replace procedure getpersondirectory(v_logname employee.logname%type,
    v_directory out varchar2)
    is 
    v_directory varchar2(100);
    begin
    select directory into v_directory from employee where logname=v_logname;
    end;
    --获取指定用户的私人文件存放路径--11,获取部门文件路径
    create or replace procedure getdeptdirectory(v_logname employee.logname%type,
    v_directory out varchar2)
    is 
    v_directory varchar2(100);
    begin
    select directory into v_directory from employee where logname=v_logname;
    end;
    --获取指定用户的部门文件存放路径
      

  10.   

    如果没有dml语句的话,用function就可以叻呀。而且登录的逻辑干吗在数据库层做呀。这是应用做的呀
      

  11.   

    pl/sql里有boolean变量类型。字符或数值型也可以
    一般密码要经过加密(比如md5)再储存到数据库中,登录时,对登录密码进行加密,然后和数据库里储存的值进行比较