Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ошибка триггера / 10 сообщений из 10, страница 1 из 1
17.06.2020, 15:21
    #39970235
SeamusPKC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка триггера
Не могу создать триггер выдает ошибку:
Compilation failed, line 11 (12:20:26) The line numbers associated with compilation errors are relative to the first BEGIN statement. This only affects the compilation of database triggers.
PLS-00225: subprogram or cursor 'V' reference is out of scopeCompilation failed, line 11 (12:20:26) The line numbers associated with compilation errors are relative to the first BEGIN statement. This only affects the compilation of database triggers.
PL/SQL: Statement ignored
Хотя в процедурах и функциях все срабатывает
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
create or replace TRIGGER trig_premiya_personal
BEFORE INSERT ON offers FOR EACH ROW
DECLARE
    schet number;
    CURSOR cur2 is select * from mmprod;
    v_id cur2%ROWTYPE;
BEGIN
    open cur2;
    select count(*) into schet from mmprod;
    IF INSERTING THEN 
    for i in 1..schet loop
        FETCH cur2 INTO v_id;
        if 3000<=v_id.summaoffer or 20<=v.id.kol then INSERT INTO nachisleniya VALUES (v_id.sellid, 100);
        commit;
        END IF;
    end loop;
    END IF;
    CLOSE cur2;
END;
...
Рейтинг: 0 / 0
17.06.2020, 16:15
    #39970262
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка триггера
SeamusPKC
PLS-00225: subprogram or cursor 'V' reference is out of scopeCompilation failed, line 11
...
Код: plsql
1.
2.
3.
...
        if 3000<=v_id.summaoffer or 20<=v.id.kol then INSERT INTO nachisleniya VALUES (v_id.sellid, 100);
...

...
Рейтинг: 0 / 0
17.06.2020, 16:25
    #39970270
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка триггера
SeamusPKC,

коммит в триггере так задумано?

....
stax
...
Рейтинг: 0 / 0
17.06.2020, 17:21
    #39970302
SeamusPKC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка триггера
andrey_anonymous,

изменил, теперь вот так, ошибка осталась
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
create or replace TRIGGER trig_premiya_personal
BEFORE INSERT ON offers FOR EACH ROW
DECLARE
    schet number;
    CURSOR cur2 is select * from mmprod;
    v_id cur2%ROWTYPE;
BEGIN
    open cur2;
    select count(*) into schet from mmprod;
    IF INSERTING THEN 
    for i in 1..schet loop
        FETCH cur2 INTO v_id;
        if 3000<=v_id.summaoffer or 20<=v_id.kol then INSERT INTO nachisleniya VALUES (v_id.sellid, 100);
        END IF;
    end loop;
    END IF;
    CLOSE cur2;
END;



вот ошибка
Compilation failed, line 11 (14:17:31) The line numbers associated with compilation errors are relative to the first BEGIN statement. This only affects the compilation of database triggers.
PL/SQL: ORA-00947: not enough valuesCompilation failed, line 11 (14:17:31) The line numbers associated with compilation errors are relative to the first BEGIN statement. This only affects the compilation of database triggers.
PL/SQL: SQL Statement ignored
...
Рейтинг: 0 / 0
17.06.2020, 17:42
    #39970311
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка триггера
SeamusPKC
ORA-00947: not enough values


Вы каждую ошибку будете с нами обсуждать?
...
Рейтинг: 0 / 0
17.06.2020, 17:51
    #39970316
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка триггера
SeamusPKC,

перечислете поля в INSERT INTO nachisleniya(х1,х2)

ps
for i in 1..schet loop странноватый цикл

.....
stax
...
Рейтинг: 0 / 0
17.06.2020, 17:59
    #39970325
SeamusPKC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка триггера
Stax, там значения ид и фиксированная ставка пример:
values(1,100) что должно предавать.

Сейчас понял.что если строк нету, то и цикл не сработает, но записи есть и по сути должно работать
...
Рейтинг: 0 / 0
18.06.2020, 05:49
    #39970436
alex-ls
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка триггера
SeamusPKC
и по сути должно работать

не должно это работать....
...
Рейтинг: 0 / 0
18.06.2020, 08:28
    #39970444
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка триггера
SeamusPKC
Stax, там значения ид и фиксированная ставка пример:
values(1,100) что должно предавать.

Сейчас понял.что если строк нету, то и цикл не сработает, но записи есть и по сути должно работать


SQL> insert into t values(1,1);
insert into t values(1,1)
*
ERROR at line 1:
ORA-00947: not enough values

покажите структуру nachisleniya
desc nachisleniya

надо перечислять поля в инсерт

INSERT INTO nachisleniya(pole1,pole2) VALUES (v_id.sellid, 100);

ps
о цикле

select count(*) into schet from mmprod;
IF INSERTING THEN

в етот момент к-во поменяется (добавят/удалят строки)

for i in 1..schet loop

часто из цикла выходят по not found
.....
stax
...
Рейтинг: 0 / 0
18.06.2020, 11:26
    #39970474
SeamusPKC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка триггера
Stax, спасибо тебе, разобрался, все работает
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ошибка триггера / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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