Oracle-(if/case/以及模拟注册登录)练习-20131015

原创 2013年12月05日 17:06:17
--作业

--1、  输入部门编号,按照下列加薪比例执行(用if-elsif 和case两种方法实现)。
--deptno  raise(%)
--10  5%
--20  10%
--30  15%
--40  20%
--加薪比例以现有的sal为标准

--方法一
select deptno,ename,sal,
       (case deptno
         when 10 then sal * 0.05
         when 20 then sal * 0.1
         when 30 then sal * 0.15
         when 40 then sal * 0.2
       end) raise_sal from emp;

--方法二  
declare
  cursor c is select deptno, ename, sal from emp;
begin
  for v_temp in c loop
    dbms_output.put(v_temp.deptno || '  ' || v_temp.ename || '  ' || v_temp.sal  || ' + ');
    if v_temp.deptno = 10 then
      dbms_output.put_line(v_temp.sal * 0.05 || ' = ' || (v_temp.sal + v_temp.sal * 0.05));
    elsif v_temp.deptno = 20 then
      dbms_output.put_line(v_temp.sal * 0.1 || ' = ' || (v_temp.sal + v_temp.sal * 0.1));
    elsif v_temp.deptno = 30 then
      dbms_output.put_line(v_temp.sal * 0.15 || ' = ' || (v_temp.sal + v_temp.sal * 0.15));
    elsif v_temp.deptno = 40 then
      dbms_output.put_line(v_temp.sal * 0.20 || ' = ' || (v_temp.sal + v_temp.sal * 0.20));
    end if;
  end loop;
end;

--2、接受2个数相除,并显示结果,如果除数为0,则显示错误提示。

select (case
         when &除数 = 0 then '除数不能为零'
         when &除数 <> 0 then '&被除数 / &除数' || ' = ' || to_char(&被除数 / &除数)
       end) 除法结果 from dual;

--3、自己创建一张userinfo表,包含两个字段username,password,
--表中的记录信息取自emp表ename,empno字段,写一个PL/SQL程序,
--模拟登陆的过程,
--用户分别输入用户名和密码,对于登陆成功和失败分别给出提示信息.

--删表
drop table userinfo cascade constraint;
--建表
create table userinfo (
  username varchar2(20),
  password varchar2(20)
);
--插数据
declare
  cursor c is select ename,empno from emp;
begin
  for v_temp in c loop
    insert into userinfo values(v_temp.ename,v_temp.empno);
  end loop;
  commit;
end;
--查询数据
select * from userinfo;
--登陆功能
create or replace procedure p_userinfo_login(v_t_us_na in userinfo.username%type,v_t_us_pa in userinfo.password%type) is
  --v_us_na in userinfo.username%type,v_us_pa in userinfo.password%type
  --v_us_na in varchar2(20),v_us_pa in varchar2(20)
  v_us_na userinfo.username%type := v_t_us_na;
  v_us_pa userinfo.password%type := v_t_us_pa;
  cursor c is select * from userinfo;
begin
  dbms_output.put_line('******登陆功能******');
  for v_temp in c loop
    if v_temp.username = v_us_na then
      v_us_na := '密码错误';
      if v_temp.password = v_us_pa then
        v_us_pa := '登陆成功';
        exit;
      end if;
    end if;
  end loop;
  if v_us_pa = '登陆成功' then
    dbms_output.put_line(v_us_pa);
  elsif v_us_na = '密码错误' then
    dbms_output.put_line(v_us_na);
  else
    dbms_output.put_line('用户不存在');
  end if;
end;
--执行方法
exec p_userinfo_login('SMITH','7369');

--4、用userinfo表,写一个PL/SQL程序,
--模拟注册的过程,
--用户分别输入用户名和密码,对于登陆成功和失败分别给出提示信息.

--注册功能
create or replace procedure p_userinfo_register(v_t_us_na in userinfo.username%type,v_t_us_pa in userinfo.password%type,v_t_us_paa in userinfo.password%type) is
  v_us_na userinfo.username%type := v_t_us_na;
  v_us_pa userinfo.password%type := v_t_us_pa;
  v_us_paa userinfo.password%type := v_t_us_paa;
  v_count number;
begin
  dbms_output.put_line('******注册功能******');
  select count(*) into v_count from userinfo where username = v_us_na;
  if v_count = 0 then
    if v_us_pa is not null and v_us_paa is not null then
    --问题 null和null是不能比较的
      if v_us_pa = v_us_paa then
        insert into userinfo values(v_us_na,v_us_pa);
        dbms_output.put_line('注册成功');
        commit;
      else
        dbms_output.put_line('密码不一致');
      end if;
    else
      dbms_output.put_line('密码不能为空');
    end if;
  else
    dbms_output.put_line('用户名重复');
  end if;
end;
--执行方法
exec p_userinfo_register('SMITH','7369','73691');
--查询数据
select * from userinfo;
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

模拟注册与登录

import java.util.*; class User { int id; String password; public User(int id, String password) ...

模拟注册与登录

import java.util.*; class User { int id; String password; public User(int id, String password) {...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

为应用增加登录功能 ruby on rails

ruby on rails 的应用,如何增加登录注册功能,本文就演示这个全过程

2017-7-14(注册登录篇)

程序的准备工作做好之后,就进入了正式的开发流程。今天就来谈谈注册登录的逻辑。先上一个丑陋的流程图 当用户进入程序之后,一般app都会有一个闪屏页。而在闪屏页上可以做一个程序启动的准备工作,例如我这里...

MySQL操作04_注册和登录

一用户注册 在html页面布局登陆表单; 在javascript文件中添加相关事件; form表单提交到后台文件zhuce.php,提交方式为post Title ...

注册登录模块

为保持主要知识点脉络清晰,本模块没有使用Ajax技术,所以没有实现注册时光标下移即可验证用户名是否被占用功能。同时省略了客户端的JS验证用户名和密码是否符合规定的功能。注册字段只有两个,昵称和密码,昵...

Java使用IO模拟注册登录

Java使用IO模拟注册登录,静态代码块

登录、注册页面及后台代码

一.登录页面及后台代码 1.登录页面如图1所示 首先进行身份选择,由“管理员”和“用户”两种身份进行选择,选择不同的身份,程序会进入不同的数据表检索登录信息;当用户名或密码为空时会提示;当用户名或密码...

php登录注册页面(新手)

php小白练手作业。代码有待完善。 需要完善的点: 1.我的验证码不能区分大小写,主要原因是不会将js中的数据传输到php中。 2.其中html部分是上学期写的代码,有些部分也还需要完善,有的地...

OAuth的机制原理讲解及开发流程

原文出处:作者,陈宇衡,http://blog.unvs.cn/archives/oauth-qq1-0-developer.html本想前段时间就把自己通过QQ OAuth1.0、OAuth2.0协...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)