复习:
--使用Oracle来模拟ID的自增长
--创建序列
create sequence seq_test1;
--创建表
create table test2(
tid number primary key,
tname varchar2(10)
);
--tid自增长插入
insert into test2 values(seq_test1.nextval,'张山');
select * from test2;
--删除表
drop table test2;
/*
PLSQL编程:过程语言,编写一些复杂业务逻辑。
输出星号:
abs(x)+abs(y)<=m
vsal emp.sal%type;--引用型变量
vrow emp%rowtype;--记录型变量
select sal into vsal from emp where empno=7788;
*/
--使用abs()函数输出菱形
declare
m number :=5;
begin
for y in -m..m loop
for x in -m..m loop
if abs(x)+abs(y)<=m then
dbms_output.put('*');
else
dbms_output.put(' ');
end if;
end loop;
dbms_output.new_line();--此处必须new_line让缓存输出,不然,循环的输出内容不会显示,会在缓存里的同一行。
end loop;
end;
游标:用来操作查询结果集,相当于是JDBC的ResultSet
语法:cursor 游标名[(参数名 参数类型)] is 查询结果集
开发步骤:
1.声明游标
2.打开游标 open 游标名
3.从游标中取数据:fetch 游标名 into 变量
游标名%found 找到数据
游标名%notfound 没有找到数据
4.关闭游标 close 游标名
系统引用游标:
1.声明游标:游标名 sys_refcursor
2.打开游标:open 游标名 for 结果集
3.从游标中取值
4.关闭游标
for循环遍历游标:
不需要声明额外变量
不需要打开和关闭游标
--输出员工表的所有员工的姓名和工资(不带参数游标)
/*
游标:所有员工
声明一个变量,用来记录每一行的数据 %rowtype
*/
declare
cursor crow is select * from scott.emp;
vrow scott.emp%rowtype;
begin
open crow;
loop
fetch crow into vrow;
exit when crow%notfound;
dbms_output.put_line('姓名:'||vrow.ename||'工资:'||vrow.sal);
end loop;
close crow;
end;
--先创建一个此用户下emp表,方便使用。
create table emp as select * from scott.emp;
select * from emp;
--带参数游标的使用
----查