"No data found" 在 oracle 触发器中执行过程时出错

"No data found" error during execute the procedure in oracle trigger

我有一个不同的触发器,希望针对不同的模式执行过程以提取数据。

使用触发器中的参数执行过程无效。

create or replace TRIGGER TRIGER_LEAD_INSERT
  AFTER INSERT ON AT_NEO_CM.LEAD_INFORMATION 
    FOR EACH ROW
DECLARE 
  --PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN

  IF :new.LEAD_REFERENCE_NUMBER IS NOT NULL THEN    
      AT_NEO_CAS_LMS.PKG_LEAD_DATA.USP_INSERT_NEWAPP(:NEW.LEAD_REFERENCE_NUMBER,:NEW.ID );   
END IF;

  EXCEPTION 
    WHEN NO_DATA_FOUND THEN 

       INSERT INTO LEADDATA VALUES(  :NEW.ID, :NEW.LEAD_REFERENCE_NUMBER,2322, 'NO DATA FOUND');

END TRIGER_LEAD_INSERT;

在过程中使用另一个 table 具有相同的主键,该主键作为参数传入过程。

要从另一个模式调用过程,您只需设置正确的授权:

CREATE USER u1 IDENTIFIED BY u1 QUOTA 1M ON USERS;
CREATE USER u2 IDENTIFIED BY u2 QUOTA 1M ON USERS;
GRANT CONNECT, RESOURCE TO u1;
GRANT CONNECT, RESOURCE TO u2;

用户 u1 有一个过程 p1 并将其授予用户 u2:

CREATE PROCEDURE p1(p NUMBER) AS BEGIN NULL; END p1;
GRANT EXECUTE ON p1 TO u2;

用户 u2 现在可以执行此过程:

CONNECT u2/u2;
EXEC u1.p1(1);

或在触发器中使用它:

CREATE TABLE t2 (id NUMBER);

CREATE OR REPLACE TRIGGER tr2 AFTER INSERT ON t2
  FOR EACH ROW
BEGIN
  IF :new.id IS NOT NULL THEN    
    u1.p1(:new.id); 
  END IF; 
END tr2;
/