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;
版权声明:本文为博主原创文章,未经博主允许不得转载。

Java编程练习:使用分层结构,基于XML文件,实现模拟用户登录

有如下XML文件 user.xml,里面存放的是用户登录信息。 分层设计思想如下: 表现层:LoginUI::input():User    LoginUI::output(...
  • tao_sun
  • tao_sun
  • 2013年06月01日 10:08
  • 752

SSO单点登录,简单模拟

SSO单点登录(以下全是个人理解,如果有误,共同批评进步) 1.什么是单点登录: 在不同的应用中,受保护的同一用户,登录一次就可以访问相关的其他系统应用。比如搜狐登录后,可以直接访问博客、邮箱等等,而...
  • shuaipu813
  • shuaipu813
  • 2016年11月21日 15:54
  • 1425

Socket通信 ---模拟用户登录

相信Socket对大家都不陌生了,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。我们平时接触的QQ,其聊天功能就是通过Socket实现的。简单点说,Sock...
  • qq_33290787
  • qq_33290787
  • 2016年08月14日 21:43
  • 2052

这是一个使用mvp模式实现模拟用户登录的简单Demo。

# MVP这是一个使用mvp模式实现模拟用户登录的简单Demo。(参考的网络资源:Thanks for hongyangAndroid)github项目地址:https://github.com/Go...
  • GodDavide
  • GodDavide
  • 2016年07月29日 19:50
  • 2586

c#模拟用户登录

C#模拟用户登陆,以校网教务系统登陆为例
  • wlh2220133699
  • wlh2220133699
  • 2016年03月09日 18:51
  • 354

AJAX操作03_封装ajax.js模拟用户登录

本文分享一下ajax方法的封装和利用ajax.js模拟用户登录 1.ajax方法的封装 从此文http://blog.csdn.net/weixin_36185028/article/details/...
  • weixin_36185028
  • weixin_36185028
  • 2017年01月02日 23:11
  • 588

java实现模拟登录新浪微博

最近做新浪微博的数据挖掘,与
  • u010343650
  • u010343650
  • 2014年07月25日 22:37
  • 1912

新浪微博模拟登录(Java)

使用HttpClient模拟新浪微博登录,贴在这里做个备忘,也希望能帮助到有这方面需求的童鞋们,代码如下:        Java代码   package com.yida....
  • sqzhao
  • sqzhao
  • 2015年10月30日 12:59
  • 2470

Python3爬虫学习笔记1.2——模拟登录

欢迎捧场,上一篇我们学习了urllib官方库的一些使用方法,今天的主要工作内容是利用Python来模拟登录网站,我们选择用知乎做实验。PS:知乎有毒。...
  • sinat_31211873
  • sinat_31211873
  • 2016年08月13日 16:50
  • 2210

struts2入门学习篇:实现一个简单的登录操作

其实struts2学习并不难,只是需要注意下细节,本文将实现一个基于struts2的简单的网页登录操作,先说一下流程吧: 1.配置struts,这是最重要的 2.写一个继承ActionSuppor...
  • chengxuzaza
  • chengxuzaza
  • 2017年03月10日 14:20
  • 1203
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle-(if/case/以及模拟注册登录)练习-20131015
举报原因:
原因补充:

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