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