я получаю эту ошибку:Oracle: операция DML внутри запроса
cannot perform a DML operation inside a query
, когда я пытался выполнить запрос
select st_atten_up(1,7) from dual;
код ДАЛ ниже.
create or replace FUNCTION st_atten_up(stu_id IN student_info.id%type,app_mon IN student_attendence.month%type)
RETURN NUMBER
IS
att1 NUMBER;
BEGIN SELECT ATTENDANCE into att1 FROM student_attendence
WHERE student_attendence.id = stu_id and student_attendence.month = app_mon;
att1 := att1 + 1;
UPDATE student_attendence SET ATTENDANCE = att1
where id = stu_id and month = app_mon;
return att1;
END;
Заранее спасибо.
Используйте 'pragma autonomous_transaction;' внутри вашей функции, чтобы сделать ее вызываемой из инструкции 'select'. –