oracle复习笔记之PL/SQL程序所要了解的知识点
|
PL/SQL的基本语法、记录类型、流程控制、游标的使用、 异常处理机制、存储函数/存储过程、触发器。 为了要有输出的结果,在写PL/SQL程序前都在先运行这一句: 结构: --声明变量、类型、游标 --程序的执行部分(类似于java里的main()方法) --针对begin块中出现的异常,提供处理的机制 --when...then... --when...then... 举例1: 举例2:
1、pl/sql基本的语法格式 6.会写一个存储函数()、存储过程() 复习记录类型: 也可以升级一下,要是想对表的所有列都输出,则:(须注意输出的列名要跟表中的列名要一样) 查询150号员工的工资,若其工资大于或等于10000 则打印‘salary >= 10000'; 若在5000到10000之间,则打印‘5000 <= salary <10000';否则打印‘salary < 5000' = 10000 then dbms_output.put_line('salary >= 10000');
elsif v_sal > 5000 then dbms_output.put_line('10000 > salary >= 5000');
else dbms_output.put_line('salary < 5000');
end if;
dbms_output.put_line('salary:'||v_sal);
end;
利用case ... when ... then ... when ...then ... else ... end实现上题;
declare
v_sal employees.salary%type;
v_temp varchar2(20);
begin
select salary into v_sal from employees where employee_id =150;
v_temp :=
case trunc(v_sal/5000) when 0 then 'salary < 5000'
when 1 then '5000 <= salary < 10000'
else 'salary >= 10000'
end;
dbms_output.put_line('salary:'||v_sal||' '||v_temp);
end;
使用循环语句打印:1-100 loop dbms_output.put_line(v_i); exit when v_i >=100; v_i := v_i + 1; end loop; end; 使用while实现: declare v_i number(5) :=1; begin while v_i <= 100 loop dbms_output.put_line(v_i); v_i := v_i + 1; end loop; end; 使用for...in...loop...end loop;实现: begin for c in 1..100 loop dbms_output.put_line(c); end loop; end;
利用for循环实现输出2-100之间的质数: 可以用goto改进一下: >
if v_flag=1 then dbms_output.put_line(v_i);
end if;
v_flag := 1;
end loop;
end;
打印1-100的自然数,当打印到50时,跳出循环 ,输出‘打印结束': >
dbms_output.put_line('打印结束');
end;
或者:
begin
for i in 1..100 loop
if i=50 then dbms_output.put_line('打印结束');
exit;
end if;
dbms_output.put_line(i);
end loop;
end;
打印出80部门的所有的员工的工资:salary:XXX declare v_sal employees.salary%type; emp_sal_cursor salary from employees where department_id = 80; begin emp_sal_cursor; emp_sal_cursor into v_sal; while emp_sal_cursor%found loop dbms_output.put_line('salary:'||v_sal); fetch emp_sal_cursor into v_sal; end loop; emp_sal_cursor; end; 可以进行优化如下: 或者使用记录再优化一下: (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
