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、自治事务。

 

 

posted on 2013-07-24 14:28  Kelly_HanShuai  阅读(168)  评论(0)    收藏  举报