--复制表 create table emp as(select * from scott.emp); select * from emp; --Demo1创建存储过程,实现将emp表comm为空时,替换成0 create or replace procedure update_emp_comm as begin update emp set comm='1' where comm='0'; dbms_output.put_line('替换成功!'); commit; end; --创建有入参及有出参的存储过程 --修改指定部门的员工工资,+100,将修改的条数作为出参 create or replace procedure update_emp_sal_by_deptno ( v_deptno number, v_sal number, v_rowcount out number ) as begin update emp set sal=sal+v_sal where deptno=v_deptno; dbms_output.put_line('修改成功,共修改了'||sql%rowcount||'条记录'); v_rowcount:=sql%rowcount; commit; end; --创建函数,返回值 --删除含有指定名称的员工,返回删除的条数 create or replace function delete_emp_by_empname ( v_name varchar2 )return number as v_num number; begin delete from emp where ename like '%'||v_name||'%'; v_num:=sql%rowcount; commit; return v_num; end; --创建函数,返回指定结果集的游标 --统计人数超过5个人的部门的最高工资和最低工资 create or replace function get_max_min_sal_by_group return sys_refcursor as my_cur sys_refcursor; --声明1个游标变量,用于返回 begin open my_cur for select deptno 部门号,max(sal) 最高工资,min(sal) 最低工资 from emp group by deptno having count(1)>3; return my_cur; end;