問題是:首先創建一個名爲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循環並吐出它o新表中的4條記錄。
調查CURSORS:將數據選擇到遊標中,循環遊標並將結果插入到新表中。 –
@NorbertvanNobelen會在下面回答這個問題並作出四次季度付款嗎? –