Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 17.11.2014
Сообщений: 53
1

Запрос в триггере

21.12.2016, 15:42. Показов 1832. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть триггер, в теле триггера присутствует запрос. Как правильно его вставить, чтоб триггер создавался без ошибок?
Oracle 11 SQL Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CREATE OR REPLACE TRIGGER NDB_TR_MMAIL_PAY_UP_REF
  BEFORE INSERT ON PAYORDER
  REFERENCING OLD AS OLD NEW AS NEW
  FOR EACH ROW
  DECLARE
  newusercode VARCHAR2(10);
BEGIN
    IF :NEW.INOPERATION = 1622 THEN
        :NEW.REF_ := 'MMail';
        --Ниже определяем и вставляем код юзера относительно сессии
         
       SELECT newusercode INTO xu$id FROM X$USERS 
                            WHERE xu$novellname  = (SELECT
                                         UPPER (osuser) 
                                         FROM v$session
                                         WHERE USER# =( SELECT UID FROM dual)
                                         AND status = 'ACTIVE'
                                         AND osuser <> 'oracle')
                            AND xu$flags = '1';
         :NEW.USERCODE : = 'newusercode'
    END IF;
END NDB_TR_MMAIL_PAY_UP_REF;
Исправьте, что не так, пожалуйста.
Нужное значение xu$id
Сам запрос корректный
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.12.2016, 15:42
Ответы с готовыми решениями:

Запрос в триггере
Добрый день! Пришлось столкнуться с Oracle, но я начинающий разработчик и прошу строго не судить мой код. При создании документа в...

Написать запрос в триггере
привет, всем активным участникам этого форума. помогите, пожалуйста, написать запрос на SQL. создать триггер Update, котрый работал...

Ошибка в триггере
CREATE OR REPLACE TRIGGER TR BEFORE INSERT ON BUS FOR EACH ROW DECLARE avgAMT NUMBER := 0; BEGIN SELECT AVG(AMT)...

4
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
21.12.2016, 16:30 2
Цитата Сообщение от Shtokola Посмотреть сообщение
чтоб триггер создавался без ошибок
Для начала неплохо бы огласить ошибки.
0
0 / 0 / 0
Регистрация: 17.11.2014
Сообщений: 53
21.12.2016, 19:59  [ТС] 3
ORA-24344: компиляция завершилась с ошибками
16/24 PLS-00103: Encountered the symbol ":" when expecting one of the following:
:= . ( @ % ; indicator
Так, отступление: В конце строки :NEW.USERCODE : = 'newusercode', точка с запятой стоит...

Добавлено через 40 минут
Oracle 11 SQL Скопировано
1
:NEW.USERCODE := 'newusercode';
поправил это место, был пробел..
Стала другая ошибка:
17:21:26 ORA-24344: компиляция завершилась с ошибками
17:21:26 8/32 PLS-00201: identifier 'XU$ID' must be declared
17:21:26 8/38 PL/SQL: ORA-00904: : недопустимый идентификатор
17:21:26 8/8 PL/SQL: SQL Statement ignored

Добавлено через 2 часа 37 минут
Oracle 11 SQL Скопировано
1
SELECT newusercode INTO xu$id FROM X$USERS
Похоже разобрался... Нужно newusercod и xu$id поменять местами...завтра проверяю.
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
22.12.2016, 10:14 4
Цитата Сообщение от Shtokola Посмотреть сообщение
:NEW.USERCODE := 'newusercode';
Кстати, тоже странная строка. Зачем в поле записывать такой литерал ('newusercode')?
0
0 / 0 / 0
Регистрация: 17.11.2014
Сообщений: 53
22.12.2016, 10:47  [ТС] 5
Рабочий триггер. все поправил.
Grossmeister, на счет вашего последнего сообщения - это тоже была моя ошибка.

Oracle 11 SQL Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
CREATE OR REPLACE TRIGGER NDB_TR_MMAIL_PAY_UP_REF
  BEFORE INSERT ON PAYORDER
  REFERENCING OLD AS OLD NEW AS NEW
  FOR EACH ROW
  DECLARE
  newusercode NUMBER;
BEGIN
    IF :NEW.INOPERATION = 1622 THEN
        :NEW.REF_ := 'MMail';
        --Ниже определяем и вставляем код юзера относительно сессии
         
       SELECT xu$id INTO newusercode FROM X$USERS 
                            WHERE xu$novellname  = (SELECT
                                         UPPER (osuser) 
                                         FROM v$session
                                         WHERE USER# =( SELECT UID FROM dual)
                                         AND status = 'ACTIVE'
                                         AND osuser <> 'oracle')
                            AND xu$flags = '1';
         IF newusercode IS NOT NULL THEN                   
             :NEW.USERCODE := newusercode;
         END IF;
    END IF;
END NDB_TR_MMAIL_PAY_UP_REF;
/
ALTER TRIGGER NDB_TR_MMAIL_PAY_UP_REF ENABLE;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.12.2016, 10:47
Помогаю со студенческими работами здесь

Подзапрос в триггере
CREATE OR REPLACE TRIGGER order_info_insert BEFORE INSERT ON RESULTS FOR EACH ROW BEGIN IF :new.ATTENDANCE &lt; (SELECT CAPACITY...

Ошибка в триггере
Есть такой вот триггер: CREATE TRIGGER LOGPROGRAMM AFTER INSERT OR UPDATE OR DELETE ON table test_table BEGIN IF...

Ошибка в триггере
В форме, при нажатии checkbox данные должны скопироваться в с одного поля в другое. Однако при проверке значения checkbox на истину,...

Как в триггере создать пользователя БД?
Здравствуйте! Вводная: После добавлении в некоторую таблицу нового человека необходимо назначить его пользователем бд и какие нибудь...

Ошибка в триггере Unknown Command
Такой вопрос: я создал триггер, но этот триггер компилируется и выскакивает такая ошибка Trigger SIGNER_ID_BIR compiled. Error...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Конвейеры данных с Apache Kafka
Javaican 16.03.2025
В мире, где данные стали новой нефтью, Apache Kafka зарекомендовал себя как мощный инструмент для построения надежных и масштабируемых конвейеров данных. Созданный изначально командой LinkedIn в 2011. . .
Deno против Node.js: Будущее JavaScript рантайма
run.dev 16.03.2025
За последнее десятилетие Node. js стал абсолютным лидером среди JavaScript-рантаймов и фактическим стандартом для серверной разработки на JavaScript. Но в 2018 году тот же разработчик, который создал. . .
SwiftUI или UIKit - что выбрать для нового приложения iOS?
mobDevWorks 16.03.2025
Когда Apple представила SwiftUI на WWDC 2019, многим показалось, что дни UIKit сочтены. Новый декларативный фреймворк предлагал радикально иной подход к разработке интерфейсов. Вместо кропотливого. . .
Docker: Руководство для начинающих по созданию первого приложения
Mr. Docker 16.03.2025
Docker — это платформа, которая упаковывает ваше приложение и все его зависимости в стандартизированные блоки, называемые контейнерами. Эти контейнеры изолированы друг от друга и от основной системы,. . .
парные условия и обработка кодов возврата (errorlevels)
jigi33 16.03.2025
Расширенная версия скобок условий, внутри неё могут быть использованы || (логическое или), & (логическое и) и логика генерации и обработки ошибок в BASH скриптах #!/ bin/ bash # Расширенная. . .
идеальная отладка в BASH скриптах
jigi33 16.03.2025
#!/ bin/ bash # VARIANT 1 - using keys -v or -xv # set -v - set verify mode OR # set -xv - set xtrace + verify mode (maximum detalization) OR # VARIANT 2 - ADD AVESOME BLOCK FOR DEBUGGING or. . .
Protobuf в Go и новый Opaque API
golander 15.03.2025
Распределенные системы опираются на эффективные протоколы обмена данными — о чем вы, скорее всего, прекрасно знаете, если работаете с микросервисной архитектурой. Protocol Buffers (Protobuf) от. . .
Преобразование строк в C++: std::from_chars от C++17 до C++26
NullReferenced 15.03.2025
Конвертация строк в числа — задача, с которой сталкивается практически каждый C++ разработчик. Несмотря на кажущуюся простоту, эта операция таит множество подводных камней и неочевидных последствий. . .
Управление памятью в Java и новые сборщики мусора
Javaican 15.03.2025
Эффективное управление памятью всегда было ахиллесовой пятой высоконагруженных Java-приложений. При разработке на Java мы обычно полагаемся на автоматическое управление памятью через сборщики мусора. . .
Angular или Svelte - что выбрать?
Reangularity 15.03.2025
Во фронтенд-разработке Angular и Svelte представляют собой два совершенно разных подхода к решению схожих задач. Один — полноценный, мощный монолит с корпоративной поддержкой, другой — компактный,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер