指向JDK这路径即可,比如我的安装目录为:c:\C:\Program Files\Java\jdk1.8.0_291
没有Oracle,开发环境从哪里来?
职员表 emp
不行, 会报参数个数和类型错误
默认情况下,oracle数据库允许在同一会话下,只能打开300个光标(可以查看oracle初始化参数得到这个值)。它的意思是指open光标之后,打开到一定数量就不可以在打开光标了。
elsif写错了
set serveroutput on
有的版本是Oracle数据库安装完成后 SQL Developer也随之安装完成 如果没有 也可以下载SQL Developer安装可视化界面
没有导入,是先把之前的表drop掉,再建的新表。sql脚本是写好的,在sqlplus里直接执行
有些报错是你可以预想到的并且当这种情况发生的时候你希望对应的解决方式自动执行,那么就可以用自定义例外,系统提示的报错有的时候会看不懂,不知道是报什么错
多了个if
是的,但是加了可以在后面继续执行,你不更新就一直是同样的数据做一百遍。
case when 实现的效果和if else的效果一样,有循环和全局修改(无法动态获取它对应的职位编号)的问题
方法一: 百度找一找
方法二:看之前的视频自己手动输入
方法三:重装数据库
难易程度由上到下
其实应该是你的程序逻辑有问题,你先执行了判断再去取光标的值。就是说你做判断的时候用的值不是你取到的值,所以你这边最好fetch放到循环体最开始。
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
declare
cursor cdept is select deptno from dept;
pdeptno dept.deptno%type;
cursor cemp(dno number) is select sal from emp where deptno = dno;
psal emp.sal%type;
count1 int;
count2 int;
count3 int;
totalMon number := 0;
flag number;
begin
open cdept;
--外层循环
loop
fetch cdept into pdeptno;
exit when cdept%notfound;
--判断部门是否存在,如果部门不存在直接退出所有循环
select count(1) into flag from emp where deptno = pdeptno;
if flag = 0 then return;
end if;
--第一层循环内给变量赋值为0,保证每次内层循环的计数器都从零开始(必须要写外层循环内,内层循环外)
count1 := 0;
count2 := 0;
count3 := 0;
open cemp(pdeptno);
loop
select sum(sal) into totalMon from emp where deptno = pdeptno;
fetch cemp into psal;
exit when cemp%notfound;
if psal <3000 then count1 := count1+1;
elsif psal <6000 then count2 := count2+1;
else count3 := count3+1;
end if;
end loop;
close cemp;
--保存到msg表
insert into msg values(pdeptno,count1,count2,count3,totalMon);
--输出
--dbms_output.put_line('部门:'||pdeptno||' 3000以下为:'||count1||' 3000-6000为:'||count2||' 6000以上为:'||count3||' 总额为:'||totalMon);
end loop;
close cdept;
commit;
dbms_output.put_line('统计完成');
end;
/
地址值只是一个开辟一个内存空间的位置或者叫名字,它不只可以存变量值,还能一切东西