ВСТАВИТЬ КАК ВЫБРАТЬ в пакет, где таблица имеет редактирование - PullRequest
0 голосов
/ 20 февраля 2019

Я отредактировал столбцы в таблице.Когда разработчик пытается использовать команду INSERT AS SELECT в пакете, он получает:

ORA-28081: Недостаточно прав - команда ссылается на отредактированный объект.

Что я могу сделать, кроме предоставления исключения для схемы (полностью отказавшись от использования редактирования)

Разработчики используют пакет, но не должны видеть содержимое таблицы

Вот функция:

FUNCTION Create****Transaction (******PackageUserId NUMBER)
   return NUMBER
   IS
   /*****************************
      Local Variable Definitions
   ******************************/
   v_****tId NUMBER(15);


   BEGIN
        v_****Id := ***_PKG.GETNEXTAMSSEQNUM();

        INSERT INTO ****_AGENCY_PACK_USER_TRANS ****
        (
         ****_ID,
         ****_****_ID,
         ****_BUS_ID,
         ****_ROLE_ID,
         ****_DATE_FROM,
         ****_DATE_TO,
         ****_ABBR,
         ****_NOTE,
         ****_CREATED_BY,
         ****_DATE_CREATED,
         ****_AUDIT_ACTION,
         ****_AUDIT_DATE,
         ****_AUDIT_LOCATION,
         ****_AUDIT_USER,
         ****_VER_NUM,
             ****_AMSS_ID,
             ****_WEBSERVICE,
         ****_APR_ID,
             ****_ASSIGN_RULE_ALLOWED,
         ****_SUP_TAG,
         ****_CPR
         )
        (
        select
           v_****Id,
         ****_ID,
         ****_BUS_ID,
         ****_ROLE_ID,
         ****_DATE_FROM,
         ****_DATE_TO,
         ****_ABBR,
         ****_NOTE,    (THIS IS REDACTED ON THE TABLE)
                 ****_CREATED_BY,
         ****_DATE_CREATED,
         ****_AUDIT_ACTION,
         ****_AUDIT_DATE,
         ****_AUDIT_LOCATION,
         ****_AUDIT_USER,
         ****_VER_NUM,
             ****_AMSS_ID,
             ****_WEBSERVICE,
         ****_APR_ID,
             ****_ASSIGN_RULE_ALLOWED,
             ****_SUP_TAG,
             ****_CPR
        FROM
                  ***********_PACKAGE_USERS
        WHERE ****_ID = *****PackageUserId
        );

        if SQL%ROWCOUNT = 0 THEN
           dbms_output.put_line('ERROR - no rows inserted!!');
           return 0;
          else
           return v_****Id;
        end if;

   END Create****ransaction;
...