2017-03-31 25 views
2

トリガーから関数を呼び出そうとすると問題が発生します。この関数は別のスキーマからのものです。他のスキーマから関数にアクセスするためのOracleトリガーの特権を与える方法

select 'GRANT EXECUTE ON VARTABLE.SEATS TO OWNER_OF_TRIGGER;' from all_objects where owner = 'xxx' and object_type='FUNCTION'; 

ただし、これは機能しません。これは何とかできますか?または、関数をトリガーのスキーマにコピーする必要がありますか?

create or replace TRIGGER CALCULATOR 
AFTER INSERT ON PEOPLE 
FOR EACH ROW 
DECLARE 
BEGIN 
<<VARTABLE>> DECLARE 
SEATS NUMBER; 
INCOME NUMBER; 
CANNOT_CHANGE_VALUE EXCEPTION; 
    BEGIN 
    SELECT COMPANY.SEAT(5,0.5,3.5) INTO VARTABLE.SEATS FROM DUAL; 
    SELECT COMPANY.INCOME(3,360,500) INTO VARTABLE.INCOME FROM DUAL; 
    IF INSERTING THEN 
     INSERT INTO CALCULATIONS (cd_id, 
     SITTING_PLACE, 
     INCOME) VALUES (:NEW.CD_ID, 
     VARTABLE.SEATS, 
     VARTABLE.INCOME); 
    END IF; 
    END; 
END; 

答えて

0

私のオラクルの日に電話をかけてきましたが、リンクを処理するシノニムを作成できる必要があります。

https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7001.htm

+0

残念ながら、動作しません。トリガーの所有者のSQLワークシートに直接投稿することができます。 DAYからSEAT(5,0.5,3.5)を選択してください。 これは動作します。 しかし、私が同じトリガーから同じことをしようとすると、私は同じ不十分な特権エラーを得ました。 –

関連する問題