Я пытаюсь создать процедуру, которая будет сканировать все элементы в таблице, и при выполнении трех условий будет обновлено определенное значение.Вот что у меня есть, когда я указываю, что обновлять:
CREATE OR REPLACE PROCEDURE NoNullRatingsForFuture(IN_GAME NUMBER) AS
BEGIN
UPDATE GAMES
SET rating_id = 10
WHERE game_id = IN_GAME;
END NoNullRatingsForFuture;
Пример использования:
EXECUTE NoNullRatingsForFuture(7);
Однако я хочу, чтобы процедура просканировала всю таблицу и обновила ее, какИтак:
CREATE OR REPLACE PROCEDURE NoNullRatingsForFuture AS
BEGIN
UPDATE GAMES
SET rating_id = 10
WHERE game_id = game_id
AND rating_id = NULL
AND release_date > SYSDATE;
END NoNullRatingsForFuture;
Пример использования:
EXECUTE NoNullRatingsForFuture;
По существу, если rating
равно нулю, а дата превышает текущую дату, измените rating_id
на 10. Также, release_date хранится в формате dd-month-yy
, если это помогает.
Эта процедура компилируется нормально, и я могу выполнить нормально, но rating_id
по-прежнему равно нулю.Что я делаю не так?