如何将事务与oracle SQL一起使用?
我尝试在SQL控制台上使用事务块和Oracle DB。我习惯在PostgreSQL中使用Transaxition块如何将事务与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
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语法可能与您使用的语法略有不同。