oracle简单编程问题,在线等 急急急!大大悬赏

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle简单编程问题,在线等 急急急!大大悬赏相关的知识,希望对你有一定的参考价值。

有雇员表及部门表,表结构如下:
雇员表emp(empno,ename,job,sal, deptno)
部门表dept(deptno,dname,loc)
雇员表emp :empno—员工编号,ename—员工姓名,
job—员工工作,sal—员工工资,
部门表dept :deptno—部门编号,dname—部门名称,loc—部门地点。
其中,雇员表emp中deptno记录该员工所在的部门deptno。
1. 根据输入指定员工的姓名,从emp表中查询该员工的
工资,并判断该员工的工资是否高于10000,
如高于10000,则给该员工的工资减少20%。
2.编写一个存储过程update_sal,给雇员加工资,过程有两个参数,
参数deptid为要加薪的部门号,参数add_level为加薪倍数。
如果指定的部门不存在员工,该过程不作任何动作,否则按照倍数更新雇员工资。
3. 创建函数select_name_sal,返回emp表中指定职工的工资和姓名,
如果该职工不存在显示‘无符合要求的记录’。
4.使用显示游标和For循环查询scott.emp表中的记录,
并将工资低于2000的工资增加30%。
5. 创建函数avg_sal,根据部门编号计算该部门所有职工的平均工资。

非常急,求高手解答,在线等

参考技术A 只做了两个
--根据输入指定员工的姓名,从emp表中查询该员工的
--工资,并判断该员工的工资是否高于10000,
--如高于10000,则给该员工的工资减少20%
declare
v_sal emp.sal%type;
v_ename emp.ename%type:=upper('&v_ename');
begin
select sal into v_sal from emp where ename=v_ename;
if v_sal>10000 then
update emp set sal=v_sal*(1-0.2) where ename=v_ename;
end if;
end;

--编写一个存储过程update_sal,给雇员加工资,过程有两个参数,
--参数deptid为要加薪的部门号,参数add_level为加薪倍数。
--如果指定的部门不存在员工,该过程不作任何动作,否则按照倍数更新雇员工资。
create or replace procedure update_sal(
deptid emp.deptno%type,--部门号
add_level number--加薪倍数
)
as
v_num number;
begin
select count(*) into v_num from emp where deptno=deptid;
if v_num>0 then
update emp set sal=sal*add_level where deptno=deptid;
end if;
end;

call update_sal(40,2);--调用存储过程,括号里的数字为部门号和加薪倍数追问

兄弟啊,其他的有答案吗,我可以等,你慢慢做出来,表示十分感谢!

追答

3.
create function select_name_sal(
param_empno emp.empno%type,
param_ename out emp.ename%type
)
return emp.ename%type
as
v_sal emp.sal%type;
begin
select ename,sal into param_ename,v_sal from emp where empno=param_empno;
return v_sal;
exception
when no_data_found then
raise_application_error(-20000,'无符合要求的记录');
end;
--调用函数
declare
v_empno emp.empno%type:='&v_empno';
v_ename emp.ename%type;
v_sal emp.sal%type;
begin
v_sal:=select_name_sal(v_empno,v_ename);
dbms_output.put_line('雇员姓名:'||v_ename);
dbms_output.put_line('雇员工资:'||v_sal);
end;
4.
DECLARE
CURSOR emp_cur IS
SELECT empno,ename,sal FROM emp WHERE sal<2000 FOR UPDATE;
BEGIN
FOR emp_row IN emp_cur
LOOP
UPDATE emp SET sal=sal*1.3 WHERE CURRENT OF emp_cur;
END LOOP;
COMMIT;
END;
一次提交不了,还有第五题的

追问

好的 麻烦你了。第五题一起发我吧,感激不尽

追答

--5.创建函数avg_sal,根据部门编号计算该部门所有职工的平均工资。
create function avg_sal(
param_deptno emp.deptno%type
)
return emp.sal%type
as
v_avg_sal emp.sal%type;
begin
select avg(sal) into v_avg_sal from emp where deptno=param_deptno;
return v_avg_sal;
end;
--调用函数
declare
v_avg_sal emp.sal%type;
begin
v_avg_sal:=avg_sal(20);--20为要查询的部门号
dbms_output.put_line('平均工资:'||v_avg_sal);
end;

本回答被提问者采纳
参考技术B 哇这还要写jdbc连接吗?逻辑上没有太难的追问

有答案吗。求做?

急急急!!!在线等!!!方法必须是安全关键的或安全可靠关键的,才能调用本机代码。

安全透明方法“WinCamera.cVideo.StartWebCam()”尝试通过方法“WinCamera.VideoAPI.capCreateCaptureWindow(System.String, Int32, Int32, Int32, Int32, Int32, IntPtr, Int32)”调用本机代码失败。方法必须是安全关键的或安全可靠关键的,才能调用本机代码。

参考技术A 电脑最信任的是安全可靠关键的方法,安全关键的方法次之,最不信任的事安全透明的方法。由于得不到电脑的信任,程序自然就不能调用本机代码。本回答被提问者采纳

以上是关于oracle简单编程问题,在线等 急急急!大大悬赏的主要内容,如果未能解决你的问题,请参考以下文章

vc6.0编程如何在程序内模拟鼠标键盘操作?(急急急,在线高分等待)

50分悬赏!急!!!急!!!路由器安装问题 在线等

急急急!!高分悬赏,windows 2008远程桌面连接问题

急急急!求matlab图像求二值图像相似度,在线等!

打印机共享错误代码0x00009c4a,有没有知道的,在线等。急急急!!!

一个for循环的Python脚本程序中如何加入多进程(并发进程)呢,急急急,在线等?