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

题目是这样的:

创建一个存储过程,存储过程名为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没用啊?

4834f79930675d633f9facd2e4da15af.gif

00****35|2011-08-26

d145eaf9ed535a3ad75d6820f36bd62f.png题目答案

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值