如何将事务与oracle SQL一起使用?

如何将事务与oracle SQL一起使用?,sql,oracle,transactions,Sql,Oracle,Transactions,我尝试在SQL控制台上使用事务块和Oracle DB。我习惯在PostgreSQL中使用Transaxition块 BEGIN; <simple sql statement> END; 开始; 结束; 但在甲骨文看来,这是不可能的。我总是收到“ORA-00900”错误,我不知道如何修复它。如果我只使用SQL语句,比如 <simple sql statement> COMMIT; 犯罪 它起作用了。但是,是否有一些标记来定义事务的开始?我试过了 START TRA

我尝试在SQL控制台上使用事务块和Oracle DB。我习惯在PostgreSQL中使用Transaxition块

BEGIN;
<simple sql statement>
END;
开始;
结束;
但在甲骨文看来,这是不可能的。我总是收到“ORA-00900”错误,我不知道如何修复它。如果我只使用SQL语句,比如

<simple sql statement>
COMMIT;

犯罪
它起作用了。但是,是否有一些标记来定义事务的开始?我试过了

START TRANSACTION;
<simple sql statement>
COMMIT;
启动事务;
犯罪

但它仍然抛出一个ORA-00900。我的操作系统是windows,我使用IntelliJ IDEA和Oracle 11g DB。

正常、读取提交事务,自动从第一个修改行开始

如果要显式设置事务,请使用:

SET TRANSACTION ISOLATION LEVEL READ COMMITTED
-但在修改第一行时,而不是在执行此语句时,将实际创建事务


设置事务隔离级别SERIALIZABLE
-在这种情况下,执行此命令后将保持读取一致性<代码>只读事务具有相同的读取一致性效果。

您可以通过发出一条SQL语句获得隐式事务块,如中所示

<simple sql statement>
Commit;

犯罪
对于匿名块或PL/SQL过程/函数/包,您可以在Postgres中看到更多选项

如果您有几个必须全部成功或全部失败的语句(A),那么,从开始,您可以执行以下操作:

DECLARE
   <variable declaration>
BEGIN
   <simple sql statement>
   <simple sql statement>
   <simple sql statement>
   SAVEPOINT do_insert;
   <sql insert statement>
EXCEPTION
   WHEN DUP_VAL_ON_INDEX THEN
      ROLLBACK TO do_insert;
      DBMS_OUTPUT.PUT_LINE('Insert has been rolled back');
END;
--and commit outside the transaction
声明
开始
保存点不插入;
例外情况
当DUP_VAL_在索引上时
回滚以进行插入;
DBMS_OUTPUT.PUT_行('插入已回滚');
结束;
--并在事务外部提交

您不需要明确地启动事务,Oracle会为您跟踪该事务。但是,您需要提交或回滚您所做的工作。要执行BEGIN-END;块,您需要在新行中输入反斜杠。如果在此之后您仍然获得ORA-00900,请查看您的“简单sql语句”作为Oracle语法可能与您使用的语法略有不同。