Sqlplus с использованием курсора для обновления / где текущий - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь добавить новый столбец в таблицу ATA_ENTERTAINER с именем MORE_THAN_ONE с типом данных NUMBER.В этом столбце должно содержаться количество типов стилей, которые есть у артиста, если их более одного (если они есть, поместите в этот столбец значение NULL).

Мой код должен, используя явную структуру курсора и цикла,Пройдите через каждого артиста и определите количество стилей, которые у них есть.Если у артиста есть более одного, мне нужно изменить значение в столбце MORE_THAN_ONE для этого артиста с количеством стилей (в этом столбце должно быть NULL, если не более одного).Также мне нужно использовать FOR UPDATE и WHERE CURRENT OF как часть решения.Используйте базовый цикл для решения этой проблемы и IF для любых структур принятия решений.

ALTER TABLE ata_entertainer 
ADD MORE_THAN_ONE NUMBER;


DECLARE
  CURSOR c_style IS
     SELECT * FROM ata_entertainer 
     NATURAL JOIN ata_entertainers_syle
     FOR UPDATE OF MORE_THAN_ONE;

  r_style       ata_entertainer%ROWTYPE;

BEGIN
  OPEN c_style;

  LOOP
    FETCH c_style INTO r_style;
    EXIT WHEN c_style%NOTFOUND
     WHERE CURRENT OF c_style;

    DBMS_OUTPUT.PUT_LINE(r_style.style_code);
  END LOOP;

  CLOSE c_style;
END;
/


Поскольку у меня нет четкого чувства явного курсора и использования кода, трудно найти проблему с моим кодомхотя я получаю много ошибок.

...