#sql #oracle #stored-procedures #triggers
#sql #Oracle #хранимые процедуры #срабатывает
Вопрос:
Я пытаюсь выполнить уже определенную хранимую процедуру внутри триггера. Когда я попытался выполнить приведенный ниже фрагмент кода, я получаю эту ошибку :
ERROR line 22, col 9, ending_line 22, ending_col 22, Found 'pat_lines_proc',
Expecting: ; -or- := -or- . -or- ( -or- @ -or- ROW
Вот как я вызываю процедуру внутри триггера и получаю вышеупомянутую ошибку:
create or replace trigger pat_lines_trig
after insert on pat_headers_all
for each row
begin
call pat_lines_proc (amp;p_lineno,amp;p_diseasename,amp;p_PAT_HEADERS_ID);
end;
/
Вот как я определил эту процедуру, и этот фрагмент кода работал нормально:
Create or Replace procedure pat_lines_proc(
p_lineno in pat_lines.LINE_NO%type,
p_diseasename in pat_lines.DISEASE_NAME%type,
p_pat_headers_id in pat_lines.PAT_HEADERS_ID%type
)
is
begin
insert into pat_lines
values(
pat_lines_seq.nextval,
p_lineno,
p_diseasename,
p_pat_headers_id
);
end pat_lines_proc;
Что, кажется, здесь не так?
Ответ №1:
Я принял имена столбцов, поэтому замените правильные имена столбцов при передаче значений в процедуру, попробуйте создать свой триггер как
CREATE OR REPLACE TRIGGER pat_lines_trig
AFTER INSERT
ON pat_headers_all
FOR EACH ROW
BEGIN
pat_lines_proc (:new.p_lineno, :new.p_diseasename, :new.p_PAT_HEADERS_ID);
END;
/