我写的oracle中的一个存储过程,请高手帮忙看看问题出在哪。题目是这样的:创建一个存储过程,存储过程名为p_login,用于操作用户登录的校验,登录需要使用EMPNO和EMPPASS,并需要提示登录中的错误,如是EMPNO不存在,还是EMPNO存在EMPPASS错误,还是其他错误等。要求:1)不同的输出状态用不同的输出编号标识(out_code)如EMPNO存在且密码正确out_code=0,EMPNO不存在此类错误的out_code=1,用户名存在密码错误out_code=2,其他错误out_code

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


相似考题
更多“我写的oracle中的一个存储过程,请高手帮忙看看问题出在哪。 题目是这样的:创建一个存储过程,存储过程名为p_login,用于操作用户登录的校验,登录需要使用EMPNO和EMPPASS,并需要提示登录中的错误,如是EMPNO不存在,还是EMPNO存在EMPPASS错误,还是其他错误等。要求:1)不同的输出状态用不同的输出编号标识(out_code)如EMPNO存在且密码正确out”相关问题
  • 第1题:

    下列有关存储过程的说法,错误的是( )

    A 它可作为一个独立的数据库对象并作为一个单元供用户在应用程序中调用

    B 存储过程必须带参数,要么是输入参数,要么是输出参数

    C 存储过程可以传入(输入)和返回(输出)参数值

    D 存储过程提高了执行效率


    参考答案B

  • 第2题:

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


    正确答案:DECLARE 
      V_ENAME VARCHAR2(100); BEGIN 
      SELECT ENAME INTO V_ENAME FROM EMP WHERE EMPNO = 100; EXCEPTION 
      WHEN NO_DATA_FOUND THEN 
        dbms_output.put_line('不存在记录');   WHEN OTHERS THEN 
        dbms_output.put_line('存在其它未知的异常'); END; 

  • 第3题:

    某软件公司采用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" 页面,登录失败时,弹出错误提示。根据题目描述,完成以下程序。


    答案:
    解析:
    问题2.1、(1)value (2)6 (3)length (4)‘9’ (5)‘0’ (6)pwd.length (7)pwdConfirm (8)true
    问题2.2、(9)myUserID (10)mypwd (11)userID (12)pwd (13)con (14)ds (15)userCenter.aspx
    问题2.1【解析】(1)document.getElementById(“id”).value是获取HTML标签中id=“id”的value的方法。(2)判断用户名长度至少为6个字符条件表达式为if(username.length<6)。(3)设置for循环条件,i的终值为密码的长度,即pwd.length。(4)(5)判断密码字符中是否有非数字字符,判断条件设置为if(onechar>‘9’||onechar<‘0’)。(6)判断密码是否已经符合纯数字的规范了,即i的值>=密码的长度(i>=pwd.length)(7)判断密码及确认密码是否输入不一致,即if(pwd!=pwdConfirm)(8)判断密码及确认密码输入一致的情况下,将checkright置为true值,将其作为函数值返回。

    问题2.2【解析】(9)Request.Form是接收post方法的对象,从题中判断得知是用来接收用户名控件中的用户信息,即Request.Form[“myUserID”]。(10)用来接收密码控件中的密码信息,即Request.Form[“mypwd”]。(11)SqlParameter(String, Object),初始化SqlParameter类的新实例,该类使用参数名称和新SqlParameter的值;根据题中判断得知,@userID值为userID。(12)根据题中判断得知,@pwd值为pwd。(13)SqlDatAdapter的语法格式为SqlDataAdapter对象名=new SqlDataAdapter(查询用sql语句,数据库连接对象),根据题中判断可知为连接对象con。(14)Fill方法括号中接DataSet对象,即ds。(15)实现页面跳转,即Response.Redirect(“userCenter.aspx”)。

  • 第4题:

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

    A.小方输入的账户密码和指纹密码都是错误的
    B.如果小方的指纹密码是错误的,那么他输入的账户密码是正确的
    C.如果小方的账户密码是正确的,那么他输入的指纹密码是错误的
    D.只有小方输入的账户密码是正确的,他的指纹密码才是正确的

    答案:C
    解析:
    三项信息都对一允许登录,一项不对一拒绝登录。根据安全中心拒绝小方登录可知,小方输入的用户名、账户密码和指纹密码中至少有一个是错误的,再根据小方输入的用户名正确,可知账户密码和指纹密码至少有一个错误。根据选言命题推理规则,若账户密码正确,则指纹密码一定错误。故选C。

  • 第5题:

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


    正确答案:select empno,ename,deptno from emp where ename like ‘张%’。

  • 第6题:

    关于登录和用户,下列各项表述不正确的是()。

    • A、登录是在服务器级创建的,用户是在数据库级创建的
    • B、创建用户时必须存在一个用户的登录
    • C、用户和登录必须同名
    • D、一个登录可以对应多个用户

    正确答案:C

  • 第7题:

    使用存储过程应对SQL注入攻击时,尤其需要注意()

    • A、存储过程中可能存在的代码缺陷
    • B、存储过程的编写方式
    • C、存储过程的执行效率
    • D、存储过程的调用次数

    正确答案:A

  • 第8题:

    数据库中有一张表名为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 EmpNO<>792' And EmpNO=<>793' 
    • D、Select * From Emp Where EmpNO =!'791' AND EmpNO =!'792' And EmpNO =!'793'

    正确答案:A,B,C

  • 第9题:

    下列有关存储过程的叙述中错误的是()。

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

    正确答案:A

  • 第10题:

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


    正确答案:错误

  • 第11题:

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


    正确答案:错误

  • 第12题:

    单选题
    下列有关存储过程的叙述中错误的是()。
    A

    执行存储过程要比执行T-SQL批处理代码快。

    B

    在一个存储过程中可以调用其他存储过程。

    C

    定义存储过程只是为了减少重复编写T-SQL代码。

    D

    使用存储过程可以减少网络通信量。


    正确答案: C
    解析: 暂无解析

  • 第13题:

    关于登录账户和数据库用户,下面表述错误的是( )

    A 登录账户是在服务器级创建的,数据库用户是在数据库级创建的

    B 用户和登录账户必须同名

    C 创建用户时必须存在该用户的登录账户

    D 一个登录账户可以对应多个用户


    参考答案B

  • 第14题:

    试题12

    有一个标题为“登录”的用户登录窗体,窗体上有两个标签,标题分别是“用户名:”和“密码:”,用于输入用户名的文本框名为“UserName”,用于输入密码的文本框名为“UserPassword”,用于进行倒计时显示的文本框名为“Tnum”,窗体上有一个标题为“确认”的按钮名为“OK”,用于输入完用户名和密码后单击此按钮确认。

    输入用户名和密码,如用户名或密码错误,则给出提示信息;如正确,则显示“欢迎使用!”信息,要求整个登录过程要在30秒中完成,如果超过30秒还没有完成正确的登录操作,则程序给出提示自动终止整个登录过程。

    请在程序空白处填入适当的语句,使程序完成指定的功能。

    Option ,Compare Database

    Dim Second As Integer

    Private Sub Form_open(Cancel As Integer)

    Second=0

    End Sub

    Private Sub Form_Timer()

    If Second > 30 Then

    MsgBox “请在30秒中登录”, vbcritical, “警告”

    Docmd.close

    Else

    Me!Tnum=30-Second

    End If

    Second =___【12】__

    End Sub

    Private Sub OK_Click()

    If Me.UserName< > “123” Or Me.UserPassword < > “456” Then

    MsgBox “错误!”+“您还有”& 30-Second & “秒”,vbcritical,“提示”

    Else

    Me.TimerInterval=___【13】____ ‘终止Timer事件继续发生

    End If

    End Sub


    正确答案:

    试题12分析
    题目设计了一个登陆窗体,要求整个登录过程要在30秒中完成,如果超过30秒还没有完成正确的登录操作,则程序给出提示自动终止整个登录过程。Private Sub Form_Timer()过程首先判断时间是否超过30秒,超过则发出警告,如果没有则显示还剩多少时间,然后second时间增1,所以第12空应天“second+1”,如果出现错误,要终止Timer事件继续发生,将Me.TimerInterval重新设置,第13空天False。
    试题12答案
    [12]second+1
    [13]False

  • 第15题:

    阅读以下说明,回答问题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" 页面,登录失败时,弹出错误提示。根据题目描述,完成以下程序。



    答案:
    解析:
    问题2.1、(1)value (2)6 (3)length (4)‘9’ (5)‘0’ (6)pwd.length (7)pwdConfirm (8)true
    问题2.2、(9)myUserID (10)mypwd (11)userID (12)pwd (13)con (14)ds (15)userCenter.aspx
    【解析】
    问题2.1【解析】(1)document.getElementById(“id”).value是获取HTML标签中id=“id”的value的方法。(2)判断用户名长度至少为6个字符条件表达式为if(username.length<6)。(3)设置for循环条件,i的终值为密码的长度,即pwd.length。(4)(5)判断密码字符中是否有非数字字符,判断条件设置为if(onechar>‘9’||onechar<‘0’)。(6)判断密码是否已经符合纯数字的规范了,即i的值>=密码的长度(i>=pwd.length)(7)判断密码及确认密码是否输入不一致,即if(pwd!=pwdConfirm)(8)判断密码及确认密码输入一致的情况下,将checkright置为true值,将其作为函数值返回。

    问题2.2【解析】(9)Request.Form是接收post方法的对象,从题中判断得知是用来接收用户名控件中的用户信息,即Request.Form[“myUserID”]。(10)用来接收密码控件中的密码信息,即Request.Form[“mypwd”]。(11)SqlParameter(String, Object),初始化SqlParameter类的新实例,该类使用参数名称和新SqlParameter的值;根据题中判断得知,@userID值为userID。(12)根据题中判断得知,@pwd值为pwd。(13)SqlDatAdapter的语法格式为SqlDataAdapter对象名=new SqlDataAdapter(查询用sql语句,数据库连接对象),根据题中判断可知为连接对象con。(14)Fill方法括号中接DataSet对象,即ds。(15)实现页面跳转,即Response.Redirect(“userCenter.aspx”)。

  • 第16题:

    请简要说明使用企业管理创建登录账号和用户账号的过程。
    (1)在SQL Server的企业管理器下,展开“SQL Server组”文件夹,找到需要建立登录账号的服务器并展开其文件夹,再展开“安全性”文件夹,在“登录”选项上右击鼠标,在出现的快捷菜单中单击“新建登录”菜单命令,打开“SQL Server登录属性->新建登录”对话框。
    (2)SQL Server支持“Windows身份验证”和单击“SQL Server身份验证”两种认证模式。选择“SQL Server身份验证”单选钮,在“名称”文本框中输入要创建的登录账号名称,例如“mysa”,在“身份验证”选项组中,并输入密码。
    (3)设置完毕后,单击“确定”按钮,即可完成登录账号的创建。   
    接下来,开始创建用户账号,基本方法是:
    (1)在企业管理器中,展开SQL Server组及其服务器,在“数据库”文件夹中,展开某一数据库,例如“进销存”的文件夹,然后在“用户”选项上右击,在弹出的快捷菜单中选择“新建数据库用户”命令,打开新建用户对话框。
    (2)单击“登录名”下拉列表框右端的下拉箭头,会看到刚刚创建的“mysa”登录帐号。选择“mysa”登录账号,此时“用户名”文本框中自动显示为“mysa”。可以更改“用户名”文本框中的用户名,也可以在“数据库角色成员”列表框中选择新建用户应该属于的数据库角色。
    (3)设置完毕后,单击“确定”按钮,即可在“进销存”数据库中创建一个新的用户账号。如果不想创建用户账号,单击“取消”按钮即可。

  • 第17题:

    下列说法错误的是()。

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

    正确答案:D

  • 第18题:

    在ORACLE中,关于同义词说法错误的是()

    • A、可以为存储过程创建同义词
    • B、同义词可以和表重名
    • C、共有同义词和私有同义词创建的权限不同
    • D、同义词只能由创建同义词的用户使用

    正确答案:D

  • 第19题:

    下面的查询中哪一个会产生笛卡尔集()

    • A、SELECT e.empno,e.ename, e.deptno, d.deptno,d.loc  FROM  emp e,dept  d WHERE e.deptno=d.deptno
    • B、SELECT e.empno, e.ename, e.deptno, d.deptno,d.loc FROM emp  e,dept  d
    • C、SELECT e.empno, e.ename, e.deptno, d.deptno,d.loc FROM emp e,dept d WHERE e.empno=101 and e.deptno=d.deptno
    • D、SELECT e.empno, e.ename, e.deptno, d.deptno,d.loc FROM emp e,dept  d WHEREe.deptno=d.deptno and d.deptno=60

    正确答案:B

  • 第20题:

    数据库中有一张表名为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,B,C

  • 第21题:

    在存储过程中可以用RETURN语句定义返回值,表示过程执行状态。如果存储过程返回100,表示()。

    • A、存储过程执行成功
    • B、存储过程执行失败,错误信息由系统定义
    • C、存储过程执行失败,错误信息由用户定义
    • D、无法确定成功或失败

    正确答案:C

  • 第22题:

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


    正确答案:错误

  • 第23题:

    单选题
    关于登录和用户,下列各项表述不正确的是()。
    A

    登录是在服务器级创建的,用户是在数据库级创建的

    B

    创建用户时必须存在一个用户的登录

    C

    用户和登录必须同名

    D

    一个登录可以对应多个用户


    正确答案: B
    解析: 暂无解析