로딩
요청 처리 중입니다...

PL/SQL 프로시저에서 커밋한 후 데이터를 찾을 수 없습니까?

 PL/SQL 프로시저에서 커밋한 후 데이터를 찾을 수 없습니까?

내 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 문을 직접 수행하면 레코드가 표시됩니다. 테이블에서 직접 선택하지 않고 보기에서 선택합니다.

삽입 직후에 이 데이터를 볼 수 없는 이유는 무엇입니까? 명시적으로 삽입문 뒤에 커밋을 넣고 확인합니다.

나에게는 삽입 후에 실제로 커밋이 발생하기 전에 select 문이 실행되고 있는 것으로 보입니다. 말씀하신 뷰가 '구체화된' 뷰인 것 같습니다.

그렇다...

# oracle # sql