SQL> savepoint s1;保存点已创建。SQL> commit;提交完成。SQL> drop table employee_hope;表已删除SQL>rollback to s1;
rollback to s1
*
第 1 行出现错误:
ORA-01086: 从未创建保存点 'S1'

解决方案 »

  1.   

    第一 你已经commit  所以保存点已经不存在了 
    第二  你执行了drop的ddl语句,  这个是隐式提交的  。
    也会重置检查点
      

  2.   

    概念混淆啊,请先参考下面的内容:
    回滚一般是回到事务开始时状态。也可以事先在一个事务中设置一些保留点,然后可以回滚事务到指定的保留点,而保留点之前的工作仍然有效。设置保留点:SAVEPOINT  保留点名字。
    回滚到指定保留点:ROALLBACK  TO  保留点名字。可以在任何地方设置一个保存点,这样可以将修改回滚到保存点处。
    当一个事务很大时,应该将其分割成一系列小的事务,并适当设置保存点。你已经commit;则事务已经结束,那设置的保留点已经不存在了,这很正常啊。
      

  3.   

    给你个例子你就能理解了:
    insert 数据a
    savepoint s
    insert 数据b
    select -- a与b都有
    rollback to s
    select -- 只有a了
      

  4.   

    2个问题:
    1.你commit 把这个事务提交了,就结束了,也释放了保存点;
    2.你drop 表属于DDL语句,该类型的语句是隐式提交。就是oracle他自动帮你提交了不能回滚了
      

  5.   

    SQL> select count(*) from employee_hope;  COUNT(*)
    ----------
            23SQL> commit;提交完成。SQL> savepoint a1;保存点已创建。SQL> delete from employee_hope where emp_no='E0083';已删除 1 行。SQL> rollback to a1;回退已完成。SQL> select count(*) from employee_hope;  COUNT(*)
    ----------
            23SQL> savepoint a2;保存点已创建。SQL> drop table employee_hope;表已删除。SQL> rollback to a2;
    rollback to a2
    *
    第 1 行出现错误:
    ORA-01086: 从未创建保存点 'A2'SQL> commit;提交完成。SQL> savepoint z1;保存点已创建。SQL> truncate table employee_hope;表被截断。SQL> rollback to z1;
    rollback to z1
    *
    第 1 行出现错误:
    ORA-01086: 从未创建保存点 'Z1'
      

  6.   


    事务只有在提交(COMMIT)后,对数据库的更改才可以永久保持。事务以执行更新操作的SQL语句开始,并显式地以ROLLBACK或COMMIT语句结束,但使用DDL语句时,事务处理将隐式地自动结束。
    呵呵…………
      

  7.   

     数据控制语言(DCL)
    事务控制语言(TCL)
    数据操纵语言(DML)
    数据定义语言(DDL)L不就是 language吗??