1

こんにちは、これは私の最初の投稿です。これが以前に尋ねられた場合は申し訳ありません。(特定の銀行の) 預金口座に利息を追加し、預金口座の顧客名と新しい残高を画面に出力する手順を作成しようとしていますが、うまくいきません。

CREATE OR REPLACE PROCEDURE addInterestNew(bank VARCHAR, interestRate INT out) AS
CURSOR CustomerBalance IS
SELECT customerName, balance
FROM Deposit
WHERE branchName = bank;


aCustomerName Deposit.customerName%TYPE;
newBalance  Deposit.balance%TYPE

BEGIN 
UPDATE DEPOSIT
SET balance = balance * (1 + (interestRate/100))
WHERE branchName = bank;

FETCH
OPEN CustomerBalance;
LOOP
FETCH CustomerBalance into aCustomerName,newbalance;
EXIT WHEN CustomerBalance%notfound;
dbms_output.put_line('CustomerName='||aCustomerName ||'balance='||newBalance);
END LOOP;
CLOSE CustomerBalance;

END;
/

どんな助けでも大歓迎です

ありがとう

4

1 に答える 1

0

ほとんどのコードは問題ないFETCHようです。カーソルを開く直前に余分なものがあり、削除する必要があります。newBalanceまた、変数宣言の後にセミコロンがありませんでした。それ以外は、interestRateパラメーターを として宣言しましたIN OUTが、どこにも変更していないようです。それでも、これはうまくいくはずです:

CREATE OR REPLACE PROCEDURE addInterestNew(bank VARCHAR, interestRate INT out) AS

  CURSOR CustomerBalance IS
    SELECT customerName, balance
      FROM Deposit
    WHERE branchName = bank;

  aCustomerName Deposit.customerName%TYPE;
  newBalance  Deposit.balance%TYPE;
BEGIN 
  UPDATE DEPOSIT
    SET balance = balance * (1 + (interestRate/100))
  WHERE branchName = bank;

  OPEN CustomerBalance;

  LOOP
    FETCH CustomerBalance into aCustomerName,newbalance;
    EXIT WHEN CustomerBalance%notfound;
    dbms_output.put_line('CustomerName='||aCustomerName ||'balance='||newBalance);
  END LOOP;

  CLOSE CustomerBalance;
END;
/
于 2013-11-14T21:36:42.050 に答える