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

Ошибка: maximum number of recursive в процедуре

26.12.2020, 02:35. Показов 2377. Ответов 1

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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
--8.3. Написать  триггер, активизирующийся  при вставке в таблицу “Поставки” и проверяющий  наличие поставки в тот же магазин того же товара от того же поставщика. Если такая поставка найдена, то вместо вставки количество суммируется, берётся максимальная сумма и самое позднее время поставки.
 
 
CREATE OR REPLACE TRIGGER Trigger_8_3
before INSERT ON supplies
FOR each ROW
DECLARE
max_date DATE;
sum_quantity NUMBER;
max_cost NUMBER;
counter NUMBER;
 
BEGIN
 
SELECT COUNT(supply_id)
INTO counter
FROM supplies a
WHERE :NEW.store_id=a.store_id AND :NEW.supplier_id=a.supplier_id AND :NEW.product_id=a.product_id;
 
IF counter>0 
THEN SELECT MAX(a.supply_date)
     INTO max_date
     FROM supplies a
     WHERE :NEW.store_id=a.store_id AND :NEW.supplier_id=a.supplier_id AND :NEW.product_id=a.product_id;
     
     SELECT SUM(a.quantity)
     INTO sum_quantity
     FROM supplies a
     WHERE :NEW.store_id=a.store_id AND :NEW.supplier_id=a.supplier_id AND :NEW.product_id=a.product_id;
     
     SELECT MAX(a.COST)
     INTO max_cost
     FROM supplies a
     WHERE :NEW.store_id=a.store_id AND :NEW.supplier_id=a.supplier_id AND :NEW.product_id=a.product_id;
     
     INSERT INTO supplies
     VALUES(:NEW.supply_id,:NEW.supplier_id,:NEW.product_id,:NEW.store_id,max_date,max_cost,sum_quantity);
END IF;
 
END Trigger_8_3;
Error report -
ORA-00036: maximum number of recursive SQL levels (50) exceeded
ORA-00036: maximum number of recursive SQL levels (50) exceeded
ORA-06512: at "LIZA.TRIGGER_8_3", line 9
ORA-04088: error during execution of trigger 'LIZA.TRIGGER_8_3'
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2020, 02:35
Ответы с готовыми решениями:

Ошибка 255 - maximum number of allowed usershares 100 reached
Столкнулся с ошибкой 255, как я понял, у Samba есть лимит на количество сетевых папок. Мне каждый...

Write a recursive function in C or C++ to calculate the Nth number in the Fibonacci sequence
Write a recursive function in C or C++ to calculate the Nth number in the Fibonacci sequence

Need to determine the year with maximum number of individuals that were alive
#include <vector> #include <iostream> using namespace std; struct birthdeath { int...

Cannot Add Role, Maximum Number Of Entries Has Been Reached
Уважаемые коллеги, хочется наконец выяснить - ЗНАЕТ ли кто-нибудь толком что-то про сабжевую...

1
476 / 239 / 114
Регистрация: 12.05.2016
Сообщений: 647
27.12.2020, 03:51 2
Вы в триггере BEFIRE INSERT на таблице делаете вставку в ЭТУ же таблицу.
У вас банально бесконечное зацикливание.

Вам не нужно в триггере делать собственно вставку в эту таблицу.

Достаточно присвоить значения переменным
:new.max_date , :new.max_cost и :new.sum_quantity

Добавлено через 1 час 1 минуту
А вообще судя по всему вам надо не BEFORE INSERT триггер, а вообще INSTEAD OF триггер.
0
27.12.2020, 03:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2020, 03:51
Помогаю со студенческими работами здесь

java.sql.SQLException: ORA-00020: maximum number of processes exceeded
Kak borotsja s etoj oshibochkoj, ne podskazhete?

ORA-01000: maximum open cursors exceeded в процедуре где курсоры явно не открываються
Кратко: оракл выдаёт указанную ошибку в процедуре которая не открывает явно курсоров и вообще...

Int number = 2; Console.WriteLine(++number - number-- * ++number); Выводит -6; Как ?
Знающие, объясните, пожалуйста. Каким чудом тут получается -6 ? O_o int number = 2; ...

Fatal error - Invalid parameter number: number of bound variables does not match number of tokens'
$pass = md5($_POST); $email = $_POST; $login = $_POST; $sex = $_POST;...

Ошибка в процедуре DelX в однонаправленном списке(в процедуре Sort)
Создать список из целых чисел.Создать новый список, записав в него все в начале все четные...

Invalid parameter number: number of bound variables does not match number of tokens
запрос $conn = connect_to_db(); $stmt = $conn->prepare("INSERT INTO brandaccounts...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru