目录
创建一个过程,用于给指定的员工涨100元钱。并且输出涨前和涨后的工资。
查询指定员工的姓名和薪水,并利用out模式参数值传给调用者。
创建一个存储过程,根据提供的雇员编号,查询该雇员的上级领导人的姓名,并返回
定义函数,使用记录类型作为返回类型,根据指定的部门号返回其对应的部门信息
创建一个过程,用于给指定的员工涨100元钱。并且输出涨前和涨后的工资。
create or replace procedure my(eno emp.empno%type)
is p_sal emp.sal%type;
begin
select sal into p_sal from emp where empno=eno;
update emp set sal=sal+100 where empno=eno;
dbms_output.put_line('改之前的工资为:'||p_sal||'改之后的工资为:'||(p_sal+100));
end;
exec my(7369);
查询指定员工的姓名和薪水,并利用out模式参数值传给调用者。
create or replace procedure my(eno emp.empno%type,p_name out emp.ename%type,p_sal out emp.sal%type)
is
begin
select ename,sal into p_name,p_sal from emp where empno=eno;
exception
when no_data_found then
dbms_output.put_line('没有员工');
end;
declare
eno emp.empno%type;
p_name emp.ename%type;
p_sal emp.sal%type;
begin
my(7788,p_name,p_sal);
dbms_output.put_line(p_name||' '||p_sal);
end;
在命令窗口通过绑定变量调用,相关步骤
var v_name varchar2(10);
var v_sal number;
exec my(7369,:v_name,:v_sal);
print v_name v_sal;
select :v_name,:v_sal from dual;
创建一个存储过程,根据提供的雇员编号,查询该雇员的上级领导人的姓名,并返回
create or replace procedure mya(eno emp.empno%type,pname out emp.ename%type)
is
mgrs emp.mgr%type;
begin
select mgr into mgrs from emp where empno=eno;
select ename into pname from emp where empno=mgrs;
exception
when no_data_found then
dbms_output.put_line('没有员工');
end;
declare
eno emp.empno%type;
sname emp.ename%type;
begin
mya(7369,sname);
dbms_output.put_line(sname);
end;
定义一个函数,用于计算emp表中某个部门的平均工资。
create or replace function get_avg(dno emp.deptno%type) return number
is
getavg emp.sal%type;
begin
select avg(sal) into getavg from emp where deptno=dno;
return getavg;
end;
select get_avg(10) 平均值 from dual;
写一个函数,传入员工编号,返回所在部门名称
create or replace function getname(eno emp.empno%type) return varchar
is
d_name dept.dname%type;
begin
select dname into d_name from dept where deptno=(select deptno from emp where empno=eno);
return d_name;
end;
select getname(7369) from dual;
写一个函数,可以查询某个员工的年收入,包括奖金
create or replace function getsum(eno emp.empno%type) return number
is
getsum emp.sal%type;
begin
select sum(nvl(sal+comm,sal))*12 into getsum from emp where empno=eno;
return getsum;
end;
select getsum(7369) from dual;
定义函数,输入部门编号,查询出该部门的员工总数。
create or replace function sums(dno emp.deptno%type) return number
is
counts emp.empno%type;
begin
select count(*) into counts from emp where deptno=dno;
return counts;
end;
select sums(20) from dual;
定义函数,使用记录类型作为返回类型,根据指定的部门号返回其对应的部门信息