Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Триггер на создание процедуры / 16 сообщений из 16, страница 1 из 1
25.12.2021, 20:50
    #40123011
KiraBatya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на создание процедуры
Дали задание создать триггер на создание процедуры,то есть если кто-то создал триггер,то запишется иформация в таблицу,кто создал,название триггера и дату создания триггера,теперь вопрос как понимать когда создавалась процедура если в таблицах dba_procedure и ей подобным столбца с датой нет и как явно указать триггер исключительно на процедуру
...
Рейтинг: 0 / 0
25.12.2021, 21:05
    #40123013
ASNexus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на создание процедуры
KiraBatya
Дали задание создать триггер на создание процедуры,то есть если кто-то создал триггер,то запишется иформация в таблицу,кто создал,название триггера и дату создания триггера,теперь вопрос как понимать когда создавалась процедура если в таблицах dba_procedure и ей подобным столбца с датой нет и как явно указать триггер исключительно на процедуру


А в [user|all|dba]_objects по имени тригера посмотреть не судьба?
...
Рейтинг: 0 / 0
25.12.2021, 21:19
    #40123024
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на создание процедуры
KiraBatya
создать триггер на создание процедуры,то есть если кто-то создал триггер
Чудак, ты путаешься в показаниях, халявщик.
...
Рейтинг: 0 / 0
25.12.2021, 21:39
    #40123034
KiraBatya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на создание процедуры
KiraBatya
Дали задание создать триггер на создание процедуры,то есть если кто-то создал процедуры,то запишется иформация в специально отведенную под это таблицу,кто создал,название триггера и дату создания триггера,теперь вопрос как понимать когда создавалась процедура если в таблицах dba_procedure и ей подобным столбца с датой нет и как явно указать триггер исключительно на процедуру
...
Рейтинг: 0 / 0
25.12.2021, 22:03
    #40123039
KiraBatya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на создание процедуры
ASNexus,
я только начинаю пытаться сделать эту задачу,думаю сделать 3 неявных курсора для имени создателя и тп,вот пытаюсь сделать для неявный курсор для даты создания процедуры

Код: plsql
1.
2.
3.
4.
5.
6.
7.
declare

    dateOfCreation all_objects.created%type;
begin
    select created into dateOfCreation from all_objects where object_type='PROCEDURE' AND ROWNUM=1 order by created desc;
  
end;


Ну неявный курсор не может хранить больше 1 записи,поэтому использую rownum,и так как если создаться процедура она отрпавиться в конец все записей таблицы all_object,поэтому сортирую по столбцу created в порядке убывания,но он почему то сортирует по возрастанию,в чем может быть проблема,я уверен что мои мысли по решению явно не лучшие как сделал реальный специалист,если у вас есть мысли по реализации по лучше - напишите.
...
Рейтинг: 0 / 0
25.12.2021, 22:31
    #40123052
KiraBatya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на создание процедуры
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create or replace trigger TriggerOnCreationProcedure
    after create on DATABASE
begin
    NOWNER all_objects.owner%TYPE;
    NDATE all_objects.created%TYPE;
    NOBJNAME all_objects.object_name%TYPE;

    select created into NOWNER from all_objects where object_type='PROCEDURE'  order by created desc fetch first 1 row only;
    select created into NDATE from all_objects where object_type='PROCEDURE'  order by created desc fetch first 1 row only;
    select created into NOBJNAME from all_objects where object_type='PROCEDURE'  order by created desc fetch first 1 row only;
    INSERT INTO tbForProcInfo VALUES(NOWNER,NDATE,NOBJNAME);
end;


Написал что-то такое,наверно ахинея,конечно же выдает ошибку,пишет
Код: plsql
1.
2.
3.
4.
2/12      PLS-00103: Encountered the symbol "ALL_OBJECTS" when expecting one of the following:     := . ( @ % ; The symbol ":=" was substituted for "ALL_OBJECTS" to continue. 
3/11      PLS-00103: Encountered the symbol "ALL_OBJECTS" when expecting one of the following:     := . ( @ % ; The symbol ":=" was substituted for "ALL_OBJECTS" to continue. 
4/14      PLS-00103: Encountered the symbol "ALL_OBJECTS" when expecting one of the following:     := . ( @ % ; The symbol ":=" was substituted for "ALL_OBJECTS" to continue. 
6/102     PLS-00103: Encountered the symbol "FETCH" when expecting one of the following:     , ; for 


Прошу подсказать как делать
...
Рейтинг: 0 / 0
25.12.2021, 22:33
    #40123053
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на создание процедуры
KiraBatya
Код: plsql
1.
select created into dateOfCreation from all_objects where object_type='PROCEDURE' AND ROWNUM=1 order by created desc;

Другие тебе это не скажут, поэтому спрашиваю я: ты дебил или тролль?
...
Рейтинг: 0 / 0
25.12.2021, 22:58
    #40123060
KiraBatya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на создание процедуры
Elic,нет,но это работает если без триггера делать,выдает 1 строчку,самую новую
...
Рейтинг: 0 / 0
25.12.2021, 22:59
    #40123061
KiraBatya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на создание процедуры
Elic,

ааа,ну это да я просто ну бывает короче,я буквально через минут 5 исправил,посмотрите мое последние сообщение
...
Рейтинг: 0 / 0
26.12.2021, 16:02
    #40123169
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на создание процедуры
KiraBatya
Elic,

ааа,ну это да я просто ну бывает короче,я буквально через минут 5 исправил,посмотрите мое последние сообщение


Ты доку вообще читаешь (риторический вопрос)? Но сначала задай себе вопрос когда будет вызываться мой триггер? Ответ: при выполнении любого CREATE будь-то CREATE PROCEDURE, CREATE TABLE или CREATE USER. Посему при СREATE не procedure

Код: plsql
1.
select ... from all_objects where object_type='PROCEDURE'  order by created desc fetch first 1 row only;



выдаст последнюю созданную процедуру что возможно было год назад а сейчас мы создали вовсе не процедуру.

Ну а теперь к доке: почитай про ora_dict_obj_type, ora_dict_obj_owner, ora_dict_obj_name и будет тебе счастье до следующего раза если не начнешь читать доку.

SY.
...
Рейтинг: 0 / 0
26.12.2021, 16:05
    #40123170
KiraBatya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на создание процедуры
Короче сделал всё-таки,может у кого будет такое задание выкладываю сюда
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create or replace trigger TriggerOnCreationProcedure
    after create on DATABASE
declare
    NOWNER all_objects.owner%TYPE;
    NDATE all_objects.created%TYPE;
    NOBJNAME all_objects.object_name%TYPE;

begin
   
    select owner into NOWNER from all_objects where object_type='PROCEDURE'  order by created desc fetch first 1 row only;
    select created into NDATE from all_objects where object_type='PROCEDURE'  order by created desc fetch first 1 row only;
    select object_name into NOBJNAME from all_objects where object_type='PROCEDURE'  order by created desc fetch first 1 row only;
    
    INSERT INTO tbForProcInfo VALUES(NOWNER,NDATE,NOBJNAME);
end;
...
Рейтинг: 0 / 0
26.12.2021, 16:09
    #40123171
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на создание процедуры
KiraBatya
Короче сделал всё-таки,может у кого будет такое задание выкладываю сюда


Жаль нет на форуме кунсткамеры . Похоже мой ответ ты так и не понял/не читал.

SY.
...
Рейтинг: 0 / 0
26.12.2021, 16:15
    #40123172
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на создание процедуры
Ну а три отдельных SELECTa для получения OWNER, NAME, CREATED это вообще заслуживает оскара во всех номинациях .

SY.
...
Рейтинг: 0 / 0
26.12.2021, 16:48
    #40123175
KiraBatya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на создание процедуры
SY,

Слушайте,большое вам спасибо.
...
Рейтинг: 0 / 0
26.12.2021, 16:49
    #40123176
KiraBatya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на создание процедуры
SY,

Ду понял я ваш ответ,просто не заметил,откуда ваще я могу знать что есть такие глобальные переменные,на лекциях не рассказывают
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
create or replace trigger TriggerOnCreationProcedure
    after create  on DATABASE
begin
    IF  ora_dict_obj_type='PROCEDURE'
            THEN 
               INSERT INTO tbForProcInfo VALUES(ora_dict_obj_owner,SYSDATE,ora_dict_obj_name);
            END IF;
end;
...
Рейтинг: 0 / 0
26.12.2021, 16:51
    #40123178
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на создание процедуры
KiraBatyaоткуда ваще я могу знать что есть такие глобальные переменные

Из документации, например. Той самой, которая вообще описывает DLL триггера.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Триггер на создание процедуры / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]