我正在尝试调试下一个oracle过程:
create or replace PROCEDURE CASE_6_TRANS_2
AS
V_NUM NUMBER(38,0);
BEGIN
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SELECT COUNT(AE.ID) INTO V_NUM FROM AUDIT_EVENT AE WHERE ID=10;
COMMIT; --BREAKPOINT
END CASE_6_TRANS_2;但是,当我想在断点看到当前事务时,V$TRANSACTION表是空的。
文档说:
事务在遇到第一个可执行SQL语句时开始。可执行SQL语句是一种SQL语句,它生成对数据库实例的调用,包括DML和DDL语句以及SET事务语句。
根据文档 选择查询是DML
发布于 2015-07-03 11:01:43
事务以SET事务开始,但是transaction_id的分配被推迟到第一个DML (在我的经验中不是SELECT语句)。
同一消息来源说..。
事务开始时,Oracle数据库将事务分配给可用的撤消数据段,以记录新事务的撤消条目。直到分配了撤消段和事务表槽才会分配事务ID,这发生在第一个DML语句中。
这对我来说是有意义的,没有理由提交或回滚一个选择。
https://stackoverflow.com/questions/31203189
复制相似问题