Oracle取模,计算器,复合变量

– 输入一个四位数,将这个四位数的千位,百位,十位,个位输入.(取模)
declare
v_num number(10);
v_ge number(10,2); – 个位数
v_shi number(10,2); – 十位数
v_bai number(10,2); – 百位数
v_qian number(10,2); – 千位数
begin
v_num := &请输入一个四位数;
v_qian := trunc((v_num/1000) mod 10); – 先除1000 在模10
v_bai := trunc((v_num/100) mod 10); – 先除100 在摸10
v_shi := trunc((v_num/10) mod 10); – 先除10 在摸10
v_ge := trunc(v_num mod 10); – 先除10 在摸10
dbms_output.put_line(‘千位数是:’||v_qian||‘百位数是:’||v_bai||‘十位数是:’||v_shi||‘个位数是:’||v_ge);
end;

– 扩展,输入两个数和符号,进行±/的运算
declare
v_action varchar2(20);
v_one number(10,2);
v_two number(10,2);
begin
v_action := ‘&请输入运算符’;
v_one :=&请输入第一个数;
v_two :=&请输入第二个数;
if(v_action=’
’) then – 运算乘法
dbms_output.put_line(v_one*v_two);
elsif(v_action=’/’) then – 运算除法
dbms_output.put_line(v_one/v_two);
elsif(v_action=’+’) then – 运算除法
dbms_output.put_line(v_one+v_two);
elsif(v_action=’-’) then – 运算减法
dbms_output.put_line(v_one-v_two);
end if;

– 零不能被做为除数
exception
when ZERO_DIVIDE then
dbms_output.put_line(‘0不能被作为除数’);

end;

– 使用复合变量将部门表和员工表的任意(7个字段)组合成record类型的变量,输入员工id,输出结果.
declare
v_id emp.empno%type;

– 自定义一个类型
type emp_type is record(
v_name emp.ename%type,
v_sal emp.sal%type,
v_typeName dept.dname%type,
v_loc dept.loc%type,
v_mgr emp.mgr%type,
v_job emp.job%type,
v_comm emp.comm%type
);

v_emp emp_type ; – 定一个复合变量
begin
v_id := &请输入员工id;
select e.ename,e.sal,de.dname,de.loc,e.mgr,e.job,e.comm into v_emp from emp e,dept de where e.deptno = de.deptno and e.empno = v_id;

dbms_output.put_line(‘员工名称为:’||v_emp.v_name);
dbms_output.put_line(‘员工工资为:’||v_emp.v_sal);
dbms_output.put_line(‘员工部门名称为:’||v_emp.v_typeName);
dbms_output.put_line(‘员工部门介绍为:’||v_emp.v_loc);
dbms_output.put_line(‘员工上级为:’||v_emp.v_mgr);
dbms_output.put_line(‘员工职业为:’||v_emp.v_job);
dbms_output.put_line(‘员工提成为:’||v_emp.v_comm);
exception
when no_data_found then
dbms_output.put_line(‘找不到该员工ID’);
when too_many_rows then
dbms_output.put_line(‘找到多行记录’);

end;

– 输入员工姓名,查询员工工资,如果有异常需要捕获

declare
v_name emp.ename%type;
v_sal emp.sal%type;
v_comm emp.comm%type;

begin
v_name :=’&请输入员工名称’;
select sal into v_sal from emp where ename = v_name;

dbms_output.put_line(‘工资为:’||v_sal);

exception
when no_data_found then
dbms_output.put_line(‘找不到该员工ID’);
when too_many_rows then
dbms_output.put_line(‘找到多行记录’);
end;

– 输入员工姓名,查询出该员工所在的部门,如果有异常需要捕获
declare
v_name emp.ename%type;
v_dName dept.dname%type;
begin
v_name :=’&请输入员工名称’;
select dname into v_dName from emp e,dept de where e.deptno=de.deptno and ename = v_name;

dbms_output.put_line(‘部门是:’||v_dName);

exception
when no_data_found then
dbms_output.put_line(‘找不到该员工ID’);
when too_many_rows then
dbms_output.put_line(‘找到多行记录’);
end;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值