gpt4 book ai didi

sql - 在 PL/SQL 过程中提交后找不到数据?

转载 作者:行者123 更新时间:2023-12-04 15:59:00 26 4
gpt4 key购买 nike

我的 PL/SQL 过程中有执行以下操作的代码片段:

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 语句,我会看到记录。

请注意,我是从 View 中选择,而不是直接从表中选择。为什么插入后我看不到这些数据?

最佳答案

这是一种预感:

payment_options 表是否有 payment_id 列?

我问这个问题是因为在下面的语句中,在 PL/SQL 中,如果 payment_id 作为列存在,那么将使用该列而不是本地 PL/SQL 变量:

SELECT subscriber 
INTO test_subscriber
FROM payment_operations_view
WHERE id = payment_id;

由于它使用 payment_id 列(如果存在),并且由于它未在插入中设置,因此您可能会执行 where id = null ,它永远不会计算为正确。

我使用 v_ 来表示变量。所以你的代码片段将变成(程序的其余部分相应地改变):

INSERT INTO payment_operations (id, subscriber, amount, description) 
VALUES (v_payment_id, 1234, 5, 'Test');
COMMIT;

SELECT subscriber
INTO v_test_subscriber
FROM payment_operations_view WHERE id = v_payment_id;

关于sql - 在 PL/SQL 过程中提交后找不到数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1862735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com