【发布时间】:2009-12-07 20:39:00
【问题描述】:
我的 PL/SQL 过程中有代码 sn-p,它执行以下操作:
INSERT INTO payment_operations (id, subscriber, amount, description) VALUES (payment_id, 1234, 5, 'Test');
COMMIT;
SELECT subscriber INTO test_subscriber FROM payment_operations_view WHERE id = payment_id;
在此之后我得到一个异常“no_data_found”!但是,如果我在运行过程后自己执行相同的 SELECT 语句,我会看到记录。
请注意,我是从视图中选择,而不是直接从表中选择。为什么我插入后看不到这些数据?
【问题讨论】:
-
我的理解是Oracle的默认隔离级别允许SELECT在提交之前达到峰值。
-
你的代码背后的想法是好的,但是你的陈述“如果我做同样的 SELECT 语句......”让我想知道你是否对 PL/SQL 变量和 column_names 有一些混淆 - 是视图中有一个名为 payment_id 的列?
-
你使用的是默认的事务隔离级别吗?
-
这是“标准”视图还是物化视图?