Oracle 将事务放入存储过程以取消所有操作
我有一个oracles存储过程,它执行2个操作,删除然后更新。我的目标是更新应始终更新一行,如果更新更多行,我希望取消这两个操作,这是我尝试的事务Oracle 将事务放入存储过程以取消所有操作,oracle,plsql,Oracle,Plsql,我有一个oracles存储过程,它执行2个操作,删除然后更新。我的目标是更新应始终更新一行,如果更新更多行,我希望取消这两个操作,这是我尝试的事务 BEGIN BEGIN transaction trans; (here is delete query) (here is update query) IF SQL%ROWCOUNT > 1 THEN ROLLBACK TO tran; ELSE C
BEGIN
BEGIN transaction trans;
(here is delete query)
(here is update query)
IF SQL%ROWCOUNT > 1 THEN
ROLLBACK TO tran;
ELSE
COMMIT;
END IF;
END;
END;
但这会产生错误<代码>错误(5,23):PLS-00103:在预期以下情况之一时遇到符号“TRANS”:=。(@%;符号“:”已替换为“TRANS”以继续。
Oracle中有什么不正确的地方必须使用保存点,如下所示:
BEGIN
SAVEPOINT tran;
(here is delete query)
(here is update query)
IF SQL%ROWCOUNT > 1 THEN
ROLLBACK TO tran;
ELSE
COMMIT;
END IF;
END;
但是,对于我来说,您不清楚要回滚到哪里,可能保存点传输;
应该放在(这里是删除查询)
-这取决于您的要求。尝试:
BEGIN
(here is delete query)
(here is update query)
IF SQL%ROWCOUNT > 1 THEN
RAISE_APPLICATION_ERROR(-20001, 'rollbacked');
END IF;
END;
oracle中的存储过程在默认情况下是事务性的,如果您有两个查询(删除和更新),并且您希望同时中止这两个查询,则无需额外的
开始事务…
或类似的操作是的,我希望同时中止这两个查询,这非常简单,谢谢!谢谢,我的要求是取消这两个查询。我做到了,再次感谢