简单的PL / SQL代码将无法运行。我找不到错误

时间:2014-12-01 04:39:16

标签: sql oracle sqlplus

我一直在调整并尝试调试这个PL / SQL代码4个小时。我也尝试在这里搜索,但它是如此具体,我真的需要帮助。这是我的代码,当我尝试运行它时,弹出两个提示问题。在我回答第二个之后,oracle就停止了运行。

---- File PLh20.sql 
-- Author: <<< NAME >>> 
------------------------------------------------------------------- 
SET SERVEROUTPUT ON 
    SET VERIFY OFF
------------------------------------ 
ACCEPT rateDecrement NUMBER PROMPT 'Enter the rate decrement: ' 
ACCEPT allowedMinRate NUMBER PROMPT 'Enter the allowed min. rate: ' 
DECLARE 
 sr boats%ROWTYPE; 
 CURSOR sCursor IS 
 SELECT B.bid, B.bname, B.color, B.rate, B.length, B.logKeeper 
 FROM Boats B
     WHERE B.bid NOT IN (SELECT bid FROM Reservations);

BEGIN 
 OPEN sCursor; 
 LOOP 
 -- Fetch the qualifying rows one by one 
 FETCH sCursor INTO sr; 
 EXIT WHEN sCursor%NOTFOUND;
 DBMS_OUTPUT.PUT_LINE ('+++++ old rate: '||sr.rate||' ' 
 ||sr.rate||); 
  sr.rate := sr.rate - &rateDecrement; 

-- A nested block 
 DECLARE 
 belowAllowedMin EXCEPTION; 
 BEGIN 
 IF sr.rate < &allowedMinRate 
 THEN RAISE belowAllowedMin; 
 ELSE UPDATE Boats 
 SET rate = sr.rate 
 WHERE Boats.bid = sr.bid; 
 -- Print the boat new record
 DBMS_OUTPUT.PUT_LINE ('+++++ new row: '||sr.bid||' ' 
 ||sr.rate||); 
 END IF; 
 EXCEPTION 
 WHEN belowAllowedMin THEN 
 DBMS_OUTPUT.PUT_LINE('+++++ Update rejected: '|| 
 'The new rate would have been: '|| sr.rate); 
 WHEN OTHERS THEN 
 DBMS_OUTPUT.PUT_LINE('+++++ update rejected: ' || 
 SQLCODE||'...'||SQLERRM); 
 END; 
 -- end of the nested block 
END LOOP; 
 COMMIT; 
 CLOSE sCursor; 
END; 

SELECT S.sid, S.rating 
FROM sailors S, reservations R, boats B 
WHERE S.sid = R.sid AND 
 R.bid = B.bid;

UNDEFINE rateDecrement
UNDEFINE allowedMinRate

1 个答案:

答案 0 :(得分:1)

DBMS_OUTPUT.PUT_LINE ('+++++ new row: '||sr.bid||' '||sr.rate||);
DBMS_OUTPUT.PUT_LINE ('+++++ old rate: '||sr.rate||' '||sr.rate||);

看起来这两个是问题所在。不应该有'||'最后。