DML操作的游标属性
游标:
在Oracle中作为指针来引用该私有工作区
隐式游标:
执行一个SQL DML语句(insert、update、delete)以及返回单行的select into时,PL/SQL都会声明和管理一个隐式游标,这种类型的游标就称为隐式的游标。
隐式游标的属性:
SQL%FOUND ------如果记录成功获取,返回true;否则就返回false
例:
begin
update emp set sal = 3100 where enpno = 7788;
if sql%found then
dbms_output.put_line('记录修改成功');
end if ;
end;
SQL%NOTFOUTD -----如果记录获取失败,返回true;否则就返回false
例:
begin
delete from emp where sal >= 2000;
if SQL%FOUND then
dbms_output.put_line('被开除的高薪员工有' || SQL%ROWCOUNT ||‘人’);
end if;
end;
SQL%ROWCOUNT-----返回从游标中获取的记录数、
2. DML语句的RETURNING字句
例:
declare
v_name varchar(50);
begin
for col in (select empno, ename from emp) loop;
update emp set ename = 'temp' where empno = col.empno
retuening ename into v_name;
dbms_output.put_line();
end loop;
end;
3. 事物、事物的回滚与提交
1. 原子性
事物不是一个可以分割的单元
2. 一致性
事物必须使系统从一个一致性状态变换到另一个一致性状态
3. 隔离性
每个事物必须独立与其他事务执行
4.持久性
确保事物完成后,对数据的修改是永久性的,即使接下来发生系统鼓掌也不会对其有任何影响
commit(提交) 、 rollback(回滚)
例:
declare
begin
update demp set name = ‘a’ where id = 1;
commit;
update demp set name = ‘b’ where id = 2;
rollback; – 程序执行到这里会清除前面没提交存在内存中的数据;
update demp set name = ‘c’ where id = 3;
commit;
end;