我写的oracle中的一个存储过程,请高手帮忙看看问题出在哪。 题目是这样的:创建一个存储过程,存储过程名为p_login,用于操作用户登录的校验,登录需要使用EMPNO和EMPPASS,并需要提示登录中的错误,如是EMPNO不存在,还是EMPNO存在EMPPASS错误,还是其他错误等。要求:1)不同的输出状态用不同的输出编号标识(out_code)如EMPNO存在且密码正确out_code=0,EMPNO不存在此类错误的out_code=1,用户名存在密码错误out_code=2,其他错误out_code=32)不同的输出状态对应不同的输出描述或提示,输出描述用out_desc标识3)存储过程运行结束要把输出状态对应的输出标识(out_code)和输出描述(out_desc)输出。以下是我写的脚本:createorreplaceprocedurep_login(NOINnumber,PASSINnvarchar2,out_codeOUTnumber,out_descOUTnvarchar2)iscount1number(10);vcountnumber(10);otherEXCEPTION;beginselectIDintocount1fromEMPwhereEMPNO=NO;selectIDintovcountfromEMPwhereEMPPASS=PASSandEMP.ID=count1;if(count1isnotnullandvcountisnotnull)thenout_code:=0;out_desc:='登录成功';elsif(count1isNullandvcountisNull)thenout_code:=1;out_desc:='EMPNO不存在';elsif(count1isnotNullandvcountisNull)thenout_code:=2;out_desc:='密码错误';elseout_code:=3;out_desc:='其他错误';endif;dbms_output.put_line(out_code||out_desc);endp_login;运行的时候会有错。主要原因是:在oracle中,只要某个参数为空的话那么系统就报错了。。。这种情况应该怎么处理呢?貌似用ISNULL没用啊?

我写的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没用啊?


相关考题:

在开发数据库应用系统时,使用存储过程可以提高数据访问效率,降低网络流量。下列关于存储过程的说法,错误的是______。A) 存储过程可以接受输入参数,并可将执行结果以输出参数形式返回B) 存储过程可以有多个输入参数,但只能有一个输出参数C) 定义存储过程时,在一个存储过程中可以同时包含数据的增、删、改、查操作D) 存储过程的输入参数和输出参数均可有默认值A.B.C.D.

一个系统的登录操作规格说明如下:登录对话框有两个数据输入:用户名和密码,登录操作对两个输入数据进行检查,要求用户名中只能包含字母和数字(字母不区分大小写),密码可以包含任何字符,用户名和密码都不能为空且长度不限。当用户名或密码为空时,则登录失败并提示对应的出错信息;当用户名不正确或用户名不存在的或密码错误时,则登录失败并提示以下三种相应的出错信息:用户名不合法(即包含有非字母、非数字字符),或用户名不存在,或密码错误;当用户名和密码都正确时,则显示登录成功信息,完成登录。假设正确的用户名是abcd123,密码是123456。使用等价类方法为上述规格说明设计等价类表。

有一个标题为“登录”的用户登录窗体,窗体上有两个标签,标题分别为“用户名:”和“密码:”,用于输入用户名的文本框名为“UserName”,用于输入密码的文本框名为“User-PassWOrd”,用于进行倒计时显示文本框名为“Tnum”窗体上有一个标题为“确认”的按钮名为“OK”,用于输入完用户名和密码后单击按钮确认。输入用户名和密码,如用户名或密码错误,则给出提示信息;如正确,则显示“欢迎使用!”信息。要求整个登录过程在30秒中完成,如果超过30秒还没有完成正确的登录操作,则程序给出提示自动终止整个登录过程。 OptionCompare SatabaseDim Second As Integer PrivateSub Form_Open(Cancel As Integer) Second=0 End Sub PrivateSub Form. Timer( ) If Second30 Then MsgBox”请在30秒中登录”,vbCrcal,”警告” Doemd.Close Else Me!Tnum=30-Second倒计时 End If Second=__________ End Sub PrivateSub OK Click( ) If Me.UsetName”123”or Me.UserPassword”456”Then MsgBox”错误!¨+”您还有”30-Second”秒”,vbCritical,”提示” Else Me.TimerInterval=__________ 终止Timer事件继续发生MsgBox” 欢迎使用!”vbInformation,”成功” DoCmd.Close End If End Sub 横线处应填写的内容是( )。A.second-1,0B.second-30,0C.second+1,0D.second+13,0

用户登录界面通常需要用户输入用户名和密码,以下是系统反馈信息的几条规则,请按照要求回答问题如果用户名和密码正确无误,则显示登录成功只要用户名为空,就提示用户名不能为空,清空密码框;用户名不为空,而密码为空,则提示密码不能为空;若用户名不正确,则提示用户名错误,清空用户名框和密码框;若用户名正确,密码不正确,则提示密码错误,清空密码框;(1)根据上述规则,设计判定表(2)根据判定表设计测试用例(假设有一用户名/密码:abc/123456,不存在名为xyz的用户)

下列有关存储过程的说法,错误的是( ) A 它可作为一个独立的数据库对象并作为一个单元供用户在应用程序中调用B 存储过程必须带参数,要么是输入参数,要么是输出参数C 存储过程可以传入(输入)和返回(输出)参数值D 存储过程提高了执行效率

关于登录账户和数据库用户,下面表述错误的是( ) A 登录账户是在服务器级创建的,数据库用户是在数据库级创建的B 用户和登录账户必须同名C 创建用户时必须存在该用户的登录账户D 一个登录账户可以对应多个用户

emp表有主键字段empno,现需要查询empno为100的ename,并赋值给变量v_ename,请写出PL/SQL块实现该功能,要求在PL/SQL块中能够捕捉到不存在记录的异常和其它未知异常,并显示出来。

试题12有一个标题为“登录”的用户登录窗体,窗体上有两个标签,标题分别是“用户名:”和“密码:”,用于输入用户名的文本框名为“UserName”,用于输入密码的文本框名为“UserPassword”,用于进行倒计时显示的文本框名为“Tnum”,窗体上有一个标题为“确认”的按钮名为“OK”,用于输入完用户名和密码后单击此按钮确认。输入用户名和密码,如用户名或密码错误,则给出提示信息;如正确,则显示“欢迎使用!”信息,要求整个登录过程要在30秒中完成,如果超过30秒还没有完成正确的登录操作,则程序给出提示自动终止整个登录过程。请在程序空白处填入适当的语句,使程序完成指定的功能。Option ,Compare DatabaseDim Second As IntegerPrivate Sub Form_open(Cancel As Integer)Second=0End SubPrivate Sub Form_Timer()If Second 30 ThenMsgBox “请在30秒中登录”, vbcritical, “警告”Docmd.closeElseMe!Tnum=30-SecondEnd IfSecond =___【12】__End SubPrivate Sub OK_Click()If Me.UserName “123” Or Me.UserPassword “456” ThenMsgBox “错误!”+“您还有” 30-Second “秒”,vbcritical,“提示”ElseMe.TimerInterval=___【13】____ ‘终止Timer事件继续发生End IfEnd Sub

某软件公司采用ASP.NET+SQL Server 技术,前端页面采用HTML+CSS +JavaScript方式,开发一套电子商务网站,主要包括用户注册与登录、商品展示与销售、订单处理等功能,项目团队某成员被分配设计实现用户注册与登录部分。问题:2.1 为了提高网站访问效率,采用JavaScript 进行客户端验证,用户注册页面中,需要验证用户各信息的合法性。假定页面中用户名控件的ID为“myname”,密码控件的ID为“mypwd1”,确认密码控件的ID为“mypwd2”,以下程序验证用户名非空且长度至少6位,密码及确认密码一致、非空且必须是数字(其他信息的验证忽略)。根据题目描述,完成以下程序。问题:2.2 (7分)以下程序表示用户登录过程,假定数据库连接字符串正确无误,用户信息表名为"users",登录页面中包括用户编号控件(ID 为 myUserID) 、密码控件(ID为 mypwd) 等。采用 SQL 参数化方式实现数据库查询,登录成功时,跳转至"userCenter.aspx" 页面,登录失败时,弹出错误提示。根据题目描述,完成以下程序。

阅读以下说明,回答问题1至问题2,将解答填入答题纸的对应栏内。【说明】某软件公司采用ASP.NET+SQL Server 技术,前端页面采用HTML+CSS +JavaScript方式,开发一套电子商务网站,主要包括用户注册与登录、商品展示与销售、订单处理等功能,项目团队某成员被分配设计实现用户注册与登录部分。问题:2.1 为了提高网站访问效率,采用JavaScript 进行客户端验证,用户注册页面中,需要验证用户各信息的合法性。假定页面中用户名控件的ID为“myname”,密码控件的ID为“mypwd1”,确认密码控件的ID为“mypwd2”,以下程序验证用户名非空且长度至少6位,密码及确认密码一致、非空且必须是数字(其他信息的验证忽略)。根据题目描述,完成以下程序。问题:2.2 (7分)以下程序表示用户登录过程,假定数据库连接字符串正确无误,用户信息表名为"users",登录页面中包括用户编号控件(ID 为 myUserID) 、密码控件(ID为 mypwd) 等。采用 SQL 参数化方式实现数据库查询,登录成功时,跳转至"userCenter.aspx" 页面,登录失败时,弹出错误提示。根据题目描述,完成以下程序。

小方在计算机安全中心存储了用户名、账户密码和指纹密码三项信息。当登录操作系统时,安全中心首先要鉴别这台计算机的指纹密码是否正确,输入的用户名是否存在,账户密码是否正确,如果三项信息均正确,则允许登录;如果以上信息有一项不正确,那么安全中心就会拒绝这个用户从这台计算机登录。小方输入的用户名是正确的,但是安全中心拒绝小方登录。由此可以推出:( )A.小方输入的账户密码和指纹密码都是错误的B.如果小方的指纹密码是错误的,那么他输入的账户密码是正确的C.如果小方的账户密码是正确的,那么他输入的指纹密码是错误的D.只有小方输入的账户密码是正确的,他的指纹密码才是正确的

请简要说明使用企业管理创建登录账号和用户账号的过程。

检索公司员工中姓张的员工信息。显示字段:empno、ename、deptno。

下列说法错误的是()。A、禁止明文传输用户登录信息及身份凭证B、应采用SSL加密隧道确保用户密码的传输安全C、禁止在数据库或文件系统中明文存储用户密码D、可将用户名和密码保存在Cookis中

关于登录和用户,下列各项表述不正确的是()。A、登录是在服务器级创建的,用户是在数据库级创建的B、创建用户时必须存在一个用户的登录C、用户和登录必须同名D、一个登录可以对应多个用户

在ORACLE中,关于同义词说法错误的是()A、可以为存储过程创建同义词B、同义词可以和表重名C、共有同义词和私有同义词创建的权限不同D、同义词只能由创建同义词的用户使用

使用存储过程应对SQL注入攻击时,尤其需要注意()A、存储过程中可能存在的代码缺陷B、存储过程的编写方式C、存储过程的执行效率D、存储过程的调用次数

下面的查询中哪一个会产生笛卡尔集()A、SELECT e.empno,e.ename, e.deptno, d.deptno,d.loc  FROM  emp e,dept  d WHERE e.deptno=d.deptnoB、SELECT e.empno, e.ename, e.deptno, d.deptno,d.loc FROM emp  e,dept  dC、SELECT e.empno, e.ename, e.deptno, d.deptno,d.loc FROM emp e,dept d WHERE e.empno=101 and e.deptno=d.deptnoD、SELECT e.empno, e.ename, e.deptno, d.deptno,d.loc FROM emp e,dept  d WHEREe.deptno=d.deptno and d.deptno=60

数据库中有一张表名为Emp,包含有如下列:EmpNO(雇员编号,Varchar(20),Pk),Job(职位Varchar(10)),HirDate(雇佣日期,Date),Sal(月薪,Float),Comm(奖金,Float,可为空)。查询出雇员编号不为791,792,793的雇员信息应该是用哪些数据查询?()A、Select * From Emp Where EmpNO Not In('791','792','793')B、Select * From Emp Where EmpNO !='791' AND EmpNO!='792' And EmpNO='793'C、Select * From Emp Where EmpNO '791' AND EmpNO792' And EmpNO=793'D、Select * From Emp Where EmpNO =!'791' AND EmpNO =!'792' And EmpNO =!'793'

数据库中有一张表名为Emp,包含有如下列:EmpNO(雇员编号,Varchar(20),Pk),Job(职位Varchar(10)),HirDate(雇佣日期,Date),Sal(月薪,Float),Comm(奖金,Float,可为空)。查询出雇员编号为791,792,793的雇员信息是()A、Select * From Emp Where EmpNO In('791','792','793')B、Select * From Emp Where EmpNO ='791' Or EmpNO='792' OR EmpNO='793'C、Select * From Emp Where EmpNO ='791' And EmpNO='793'D、Select * From Emp Where EmpNO '791' And EmpNO'793'

下列有关存储过程的叙述中错误的是()。A、执行存储过程要比执行T-SQL批处理代码快。B、在一个存储过程中可以调用其他存储过程。C、定义存储过程只是为了减少重复编写T-SQL代码。D、使用存储过程可以减少网络通信量。

在存储过程中可以用RETURN语句定义返回值,表示过程执行状态。如果存储过程返回100,表示()。A、存储过程执行成功B、存储过程执行失败,错误信息由系统定义C、存储过程执行失败,错误信息由用户定义D、无法确定成功或失败

确认是验证用户的标识,如登录口令验证、指纹验证、电子证书存储器。

账号登录时提示:“用户登录失败,密码错误!您已有1此登录失败,超过5次之后将被锁定”,原因为用户名输入错误。

电e宝上选择户号登录时,需要填写与手机号登录一样的登录密码,否则提示密码错误。

单选题关于登录和用户,下列各项表述不正确的是()。A登录是在服务器级创建的,用户是在数据库级创建的B创建用户时必须存在一个用户的登录C用户和登录必须同名D一个登录可以对应多个用户

单选题下列有关存储过程的叙述中错误的是()。A执行存储过程要比执行T-SQL批处理代码快。B在一个存储过程中可以调用其他存储过程。C定义存储过程只是为了减少重复编写T-SQL代码。D使用存储过程可以减少网络通信量。