51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3398|回复: 3
打印 上一主题 下一主题

我写的oracle中的一个存储过程,请高手帮忙看看问题出在哪。

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-8-22 16:04:05 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
题目是这样的:
创建一个存储过程,存储过程名为p_login,用于操作用户登录的校验,登录需要使用EMPNO和EMPPASS,并需要提示登录中的错误,如是EMPNO不存在,还是EMPNO存在EMPPASS错误,还是其他错误等。
要求:
1)不同的输出状态用不同的输出编号标识(out_code)如EMPNO存在且密码正确out_code=0,EMPNO不存在此类错误的out_code=1,用户名存在密码错误out_code=2,其他错误out_code=3
    2)不同的输出状态对应不同的输出描述或提示,输出描述用out_desc标识
3)存储过程运行结束要把输出状态对应的输出标识(out_code)和输出描述(out_desc)输出。

以下是我写的脚本:
create or replace procedure p_login ( NO IN number, PASS IN nvarchar2, out_code OUT  number, out_desc OUT nvarchar2)
is
count1 number(10);
vcount number(10);
other EXCEPTION;
begin
select ID into count1 from EMP where EMPNO= NO;
select ID into vcount from EMP where EMPPASS= PASS and EMP.ID = count1;
if (count1 is not null and vcount is not null) then
         out_code:=0;
         out_desc:= '登录成功';
elsif (count1 is Null and vcount is Null) then
         out_code:=1;
         out_desc:= 'EMPNO不存在';
elsif (count1 is not Null and vcount is Null) then
         out_code:=2;
         out_desc:= '密码错误';
else out_code:=3;
     out_desc:= '其他错误';
end if;
dbms_output.put_line(out_code||out_desc);
end p_login;

运行的时候会有错。主要原因是:在oracle中,只要某个参数为空的话 那么系统就报错了。。。这种情况应该怎么处理呢?貌似用IS NULL没用啊?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    开心
    2014-12-22 12:46
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    4#
    发表于 2011-8-25 11:05:50 | 只看该作者
    用raise试试
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2011-8-25 10:18:14 | 只看该作者
    null和Empty不是一码事吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2#
    发表于 2011-8-24 15:08:31 | 只看该作者
    学习中…………
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-27 06:36 , Processed in 0.078942 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表