1、PL/SQL中的DML。
1)、DML语句的快速入门:
DML语句有四种:Insert、Update、Delete、Merge,其中Insert、Update和Delete里和SQL server一样,不多说了,这里的Merge的意思是“插入更新”的操作,即插入的时候,如果记录存在就更新,不存在就插入。
2)、DML操作的游标属性:
SQL%FOUND :如果有一行或多行记录被成功修改(包括创建、修改、删除)返回True。
SQL%NOTFOUND:如果DML语句没有修改任何行则返回True。
SQL%ROWCOUNT:返回DML语句修改的记录行数。
举例用法:
begin
update books set author :=new_name_in where author:=old_name_in;
charges_made_out :=SQL%Found-----如果修改成功超过一行,则返回的是True
changes_rowcount_out:=SQL%RowCount ----返回影响的行数。
end
3)、从DML语句返回信息:
通过Returning语句返回DML语句执行后的结果,如:
Update employees set salary = salary*1.5 where .....
returning salary into mysql----把执行后的结果放入到mysql变量中。
4)、DML 和异常处理:
5)、DML和记录:
我们可以在Insert和Update语句中使用记录类型:
book_in books%ROWTYPE
insert into books values book_in---插入一整行
update books set ROW =book_in----更新一整行。
where 。。。。。。。。。
注意:ROW 是代表一整行的意思,所有表的列不能取名为ROW。
使用Returning语句返回:
update books set Row =book_in where ...
Returning bookid,bookName ....(books表的所有字段名称) into my_book_return_info(books%ROWTYPE类型的变量)
注意:使用记录的时候,update语句Set之后只能跟Row,不能再接任何一列,即不能更新一行,又更新某一个列。
2、事务管理。
Commit:保存从上一个Commit或者Rollback以来发生的所有变化,并且释放锁资源。
Rollback:撤销从上一个Commit或者Rollback以来发生的所有变化,并且释放锁资源。
Rollback To SavePoint:撤销自从指定的保存点以来的所有变化,并且释放这一部分使用的锁资源。
SavePoint:创建一个保存点。
Set Transaction:启动一个只读或读写会话,构建一个隔离级别,或者为当前的事务分配一个专门的回滚段。
Lock table :锁定整个数据库表,行级锁。
1)、Commit语句:
Commit ;Commit work; Commit comment '........'
2)、Rollback:
rollBack; rollback work; rollback to begin_cleanup;--------work是一个关键字,可以没有,第三种回滚到上一个保存点。
3)、SavePoint:
保存点,语法 SavePoint savepoint_name,创建一个保存点。
4)、Set Transaction命令:
启动一个只读的会话:Set Transation Read Only;
启动一个读写的会话:Set Transation Read Write:--默认的情况下。
5)、Lock Table:
锁定一张表,拒绝在我们在访问这张表的时候,让别人再访问。
3、自治事务。
浙公网安备 33010602011771号