Вопрос: Сначала создайте таблицу с именем amttopay, в которой есть три поля: rec_no, idno и amt (введите числовое поле, которое может содержать 3 десятичных знака. Вы также будете использовать копию таблицы доноров для этого задания. Возьмите число, соответствующее idno на таблице доноров. Проверьте yrgoal для этой записи. Если она больше 500, то удвойте ее, чтобы создать новую цель и записать четыре записи в таблице amttopay (1 - 4), idno и ежеквартальную сумму, чтобы заплатить за достижение новой цели. Если она не превышает 500, то добавьте 50% к цели, чтобы сделать новую цель и обработать ее, написав четыре записи с одинаковой информацией.PL/SQL нужна помощь по этому вопросу
Я создал таблицу amttopay, которая пуста:
SQL> create table amttopay
2 (rec_no number(3),
3 idno number(3),
4 amt number(8,3));
Table created.
У меня также есть таблица доноров, так что вы можете увидеть, для справки:
SQL> select *
2 from newloop;
IDNO NAME STADR CITY ST ZIP DATEFST YRGOAL
11111 Stephen Daniels 123 Elm St Seekonk MA 02345 03-JUL-98 500
12121 Jennifer Ames 24 Benefit St Providence RI 02045 24-MAY-97 400
22222 Carl Hersey 24 Benefit St Providence RI 02045 03-JAN-98
23456 Susan Ash 21 Main St Fall River MA 02720 04-MAR-92 100
33333 Nancy Taylor 26 Oak St Fall River MA 02720 04-MAR-92 50
34567 Robert Brooks 36 Pine St Fall River MA 02720 04-APR-98 50
Мой код:
SET VERIFY OFF
DECLARE
v_idno donornew.idno%TYPE :=&input_idno;
v_yrgoal donornew.yrgoal%TYPE;
BEGIN
SELECT idno, yrgoal INTO v_idno, v_yrgoal
FROM newloop
WHERE idno = v_idno;
IF v_yrgoal > 500 THEN
v_newgoal := v_yrgoal * 2;
ELSE v_yrgoal < 500 THEN
v_newgoal := v_yrgoal * 1.5;
END IF;
UPDATE newloop
SET yrgoal = v_newgoal
WHERE idno = v_idno;
COMMIT;
END;
/
SET VERIFY ON
Я не знаю, как исправить мой код, чтобы запустить его, чтобы выбрать idno, взять yrgoal запустить цикл if и выплюнуть его t o эти 4 записи в новой таблице.
Посмотрите на КУРСОРЫ: выберите свои данные в курсор, переместите курсор и вставьте результаты в новую таблицу. –
@NorbertvanNobelen ответит ниже, возьмите его и сделайте четыре ежеквартальных платежа? –