ORACLE Возможно ли выполнить процедуру сохранения из триггера? - PullRequest
1 голос
/ 05 февраля 2020

ORACLE Возможно ли выполнить процедуру сохранения из триггера?

Привет, я пытаюсь выполнить процедуру сохранения из триггера. Я протестировал процедуру хранения, и она отлично работает:

EXECUTE ESCRIBE_INVENTARIO;

Затем я создаю триггер:

CREATE OR REPLACE TRIGGER REPORTUSER.VENTA_ECOMMERCE 
AFTER UPDATE ON  INVOICE FOR EACH ROW

BEGIN
ESCRIBE_INVENTARIO;
END;
/

Но когда я скомпилировал его, я получил эту ошибку:

Триггер VENTA_ECOMMERCE compilado

LINE/COL  ERROR
--------- -------------------------------------------------------------
2/1       PL/SQL: Statement ignored
2/1       PLS-00201: identifier 'ESCRIBE_INVENTARIO' must be declared
Errores: comprobar log de compilador

Я не знаю, как объявить процедуру сохранения.

это заголовок для процедуры хранения, тело процедуры отсутствует.

CREATE OR REPLACE PROCEDURE ESCRIBE_INVENTARIO
IS
    EXISTE NUMBER; -- CREACIÓN DE LA VARIABLE QUE VERIFICA SI YA SE GENERO EL INVENTARIO DIARIO

    BEGIN

    SELECT (SELECT COUNT(BANDERA_CONTROL) FROM REPORTUSER.CONTROL_INVENTARIO_V WHERE TRUNC(FECHA) = TRUNC(SYSDATE) AND BANDERA_CONTROL = 1) INTO EXISTE FROM DUAL;

        IF EXISTE = 0 THEN

...

1 Ответ

2 голосов
/ 05 февраля 2020

Да, определенно возможно выполнить процедуру из триггера.

Единственная причина, которую я могу себе представить, это то, что REPORTUSER не имеет доступа к процедуре.

Попробуйте предоставьте привилегию выполнения пользователю отчетов

grant execute on ESCRIBE_INVENTARIO to REPORTUSER;

и поместите имя владельца перед именем процедуры в коде триггера, например

begin
  owner.escrive_inventario;
end;

Имя владельца можно получить из dba_objects

select owner, object_name from dba_objects where object_name = 'ESCRIBE_INVENTARIO';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...