Я выполняю простую процедуру, но с коммитом, но она не работает.
SQLERROR не указывается.
PROCEDURE change_status (id NUMBER, status number) IS
BEGIN
DBMS_OUTPUT.PUT_LINE ('CHANGING STATUS TO: '|| status || ' id '|| id);
update STATISTICS_HANDLER sh set sh.status = status where sh.id = id;
DBMS_OUTPUT.PUT_LINE ('CHANGING STATUS TO: AFTER UPDATE '|| status || ' id '|| id);
commit;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE ('INSIDE change_status EXCEPTION ' || SQLERRM);
END;
Что я делаю не так?
Кстати, изменив sh.status = status
на sh.status = 8
(например). Прекрасно работает.
Заранее спасибо - я разбиваю свои яйца уже 3 часа.
Попробовал следующее:
EXECUTE PKG_STATISTICS.change_status(1223,5);
и
BEGIN
PKG_STATISTICS.change_status(1223,5);
END;
и в STATISTICS_HANDLER
есть строка с идентификатором 1223
.
РЕШЕНИЕ:
Смена имени переменной с состояния на другое (не имя столбца) сработало.