Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Администрирование Oracle Database:
- Установка и настройка базы данных
- Обновление, применение патчей
- Оптимизация, настройка производительности
- Обучение, подготовка персонала, оптимизация
  • Страница:
  • 1

ТЕМА: администрирование баз данных oracle - Проблема в триггерах

администрирование баз данных oracle - Проблема в триггерах 19 янв 2012 12:49 #4031

  • Mirzan
  • Mirzan аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 15
  • Спасибо получено: 0
Я новичок в этом вопросе, а потому прошу отнестись с пониманием.
Очень нужно данные, получаемые в триггерах, в структурах NEW&OLD, передать в сохраненную процедуру. Как это сделать совершенно не знаю... и еще: я знаю как обратиться к полям структуры по наименованию поля, но если я его не знаю, как это сделать, например через индекс?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Mirzan.

Re: администрирование баз данных oracle - Проблема в триггерах 19 янв 2012 12:55 #4033

Значит, давай по порядку.
С NEW&OLD проблем нет, просто нужно не забывать про двоеточие))
Возьмем, например таблицу ASSA
CREATE TABLE assa
(
a VARCHAR2(100),
id_doc NUMBER
)
PCTFREE 10
PCTUSED 40
INITRANS 1
MAXTRANS 255
/
Триггер для неё
CREATE OR REPLACE TRIGGER andrew_assa_proba
BEFORE INSERT OR DELETE OR UPDATE
ON assa
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
Begin
PROBA_1(:old.a, :old.id_doc, 0);
PROBA_1(:new.a, :new.id_doc, 1);
End;
/
Процедура для сохранения как старых так и новых параметров.
Procedure PROBA_1
( par1 varchar2, par2 number, par3 number)
IS
BEGIN
insert into assa1(a, id_doc, N_O, timestamp) values(par1,par2,par3, sysdate);
END; -- Procedure PROBA_1

И еще одну табличку с похожим параметрами:
CREATE TABLE assa1
(
a VARCHAR2(100),
id_doc NUMBER,
n_o NUMBER(1),
timestamp DATE
)
PCTFREE 10
PCTUSED 40
INITRANS 1
MAXTRANS 255
/
Должно работать!

Второй вопрос не совсем понятен, можешь более детально объяснить), извини..

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Oleg491.

Re: администрирование баз данных oracle - Проблема в триггерах 19 янв 2012 13:02 #4034

  • Mirzan
  • Mirzan аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 15
  • Спасибо получено: 0
Благодарю за детальный ответ, но это я и сам знаю))
А проблемы у меня вот с чем:

:NEW или :OLD, а другими словами - структура типа RECORD, возвращается в триггере.
Если ты работаешь в Microsoft, проблем нет, там вместо структур, применяются таблицы, что позволяет делать select, курсор и другие вещи. Я хочу что-то подобное в Оракле. Тут с этим проблема.
Другими словами, можно ли к полям структуры обращаться как к типу таблица. Если через TABLE делать, то нужно каким-то образом перегнать ее в цикле. Можно попробовать написать перечисление полей для все БД для каждой таблицы, но как-то не очень хочется... По правильному было бы осуществить это в цикле в независимости от структуры таблиц, при этом применив все в соответственных триггерах, но знаний для этого не достаточно...
Помогите, а?!!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1