首页 > 数据库 >Oracle 练习P297 131026 PL/SQL块程序

Oracle 练习P297 131026 PL/SQL块程序

时间:2022-11-17 13:12:01浏览次数:43  
标签:131026 dbms P297 员工 emp SQL put output deptno

--1、编写一个PL/SQL块,输出所有员工的员工姓名,员工号、工资和部门号。 begin   for v_emp in (select * from emp) loop     dbms_output.put('员工姓名:' || v_emp.ename);     dbms_output.put(',员工号:' || v_emp.empno);     dbms_output.put(',工资:' || v_emp.sal);     dbms_output.put_line(',部门号:' || v_emp.deptno);   end loop; end; --2、编写一个PL/SQL块,输出所有比本部门平均工资高的员工信息。 begin   for v_emp in (select e.*                   from emp e                   join (select deptno, avg(sal) avg_sal                          from emp                         group by deptno) t on e.deptno = t.deptno                  where e.sal > t.avg_sal                  order by e.deptno) loop     dbms_output.put('员工姓名:' || v_emp.ename);     dbms_output.put(',员工号:' || v_emp.empno);     dbms_output.put(',工资:' || v_emp.sal);     dbms_output.put_line(',部门号:' || v_emp.deptno);   end loop; end; --3、编写一个PL/SQL块,输出所有员工及其部门领导的姓名、员工号及部门号。 begin   for v_emp in (select e1.empno a,                        e1.ename b,                        e1.deptno c,                        e2.ename d,                        e2.empno e,                        e2.deptno f                   from emp e1                   join emp e2 on e1.mgr = e2.empno) loop     dbms_output.put('员工姓名:' || v_emp.a);     dbms_output.put('员工员工号:' || v_emp.b);     dbms_output.put('员工部门号:' || v_emp.c);     dbms_output.put(',领导姓名:' || v_emp.d);     dbms_output.put(',领导员工号:' || v_emp.e);     dbms_output.put_line(',领导部门号:' || v_emp.f);              end loop; end; --4、查询姓为“SMITH”的员工信息,并输出其员工号、姓名、工资、部门号。 --如果该员工不存在,则插入一条新记录,员工号为2012,员工姓为“SMITH”,工资为7500元, --入职日期为“2002年3月5日”,部门号为50,如果存在多个名为“SMITH”的员工, --则输出所有名为“SMITH”的员工号、姓名、工资、入职日期、部门号L。 --delete from emp2 where ename = 'SMITH'; declare   v_exist number(1); begin   select count(*) into v_exist from emp2 where ename = 'SMITH';   --dbms_output.put_line(v_exist);   if v_exist = 0 then     insert into emp2(empno,ename,sal,hiredate,deptno) values('2012','SMITH',7500,to_date('20020305','yyyymmdd'),50);     commit;   elsif v_exist >= 1 then     for v_emp in (select * from emp2 where ename='SMITH') loop       dbms_output.put_line('员工号:' || v_emp.empno);       dbms_output.put_line('姓名:' || v_emp.ename);       dbms_output.put_line('工资:' || v_emp.sal);       dbms_output.put_line('入职日期:' || v_emp.hiredate);       dbms_output.put_line('部门号:' || v_emp.deptno);     end loop;   else null;   end if; end;

标签:131026,dbms,P297,员工,emp,SQL,put,output,deptno
From: https://blog.51cto.com/yuzhyn/5860703

相关文章

  • Oracle plsqlI 练习 传值
    --根据人名查个人薪水和本部门平均薪水--select语句实现selecta.deptno "部门编号",    a.dname "部门名称",    a.......
  • Oracle plsql 月历
    declare v_yearnumber:=2013; v_monthnumber:=&input_month; v_daynumber; v_lastdaynumber;begin dbms_outp......
  • Oracle-1 / Oracle及PlsqlDeveloper的设置
    1、启动监听器与服务器我的电脑->管理->服务...保证“...listener...”和“...service...”两个服务开启2、客户端软件设置tools->preference->connection->Or......
  • Oracle 自带建表例子 scott.sql 文件
    RemCopyright(c)1990byOracleCorporationRemNAMEREMUTLSAMPL.SQLRemFUNCTIONRemNOTESRemMODIFIEDRemgdudey06/28/95-Modifiedfordesktopseed......
  • 提示‘操作无法完成,应为文件已在SQL Server(MSSQLSERVER)中打开’,移动或删除数据库相
    移动或删除数据库相关文件时出现提示‘操作无法完成,应为文件已在SQLServer(MSSQLSERVER)中打开’ 解决方法:在开始菜单附近的搜索中搜索服务  找到SQLServer(......
  • SQLServer 使用 PIVOT
    单个透视SELECTID,NAME,Max([Raisedtosupplier(PLANED)])[Raisedtosupplier(PLANED)],Max([BaseTestDate(PLANED)])[BaseTestDate(PLAN......
  • mysql获取当前月,当前年天数(包含上个月,上一年天数)
     1、获取当前月天数:selectday(last_day(NOW())); 2、获取上一月天数:SELECTday(LAST_DAY(date_sub(curdate(),interval1MONTH)));  3、获取当前年的总......
  • MySql类型转换函数cast
    这两天处理一个现网的MySQL慢查询工单,学到了一个好用的MySQL函数:cast。事情是这样的:我们有两张表t_user和t_rule表,需要关联这两张表去查询,关联字段是t_user表的主键......
  • MySQL8 常用命令
    初始化(初始化之后的密码需要记一下,首次登录的时候需要用到)mysqld--initialize--console安装(服务名称可选,默认为MySQL)mysqldinstall服务名称启动服务netstar......
  • mysql-navicat主键递增清零
    在navicat上设置没有用必须使用sql语句清零MySQL自增ID起始值修改方法-52php-博客园(cnblogs.com)mysql自增主键清零方法-木西-Muxy-博客园(cnblogs.com)......