2014-12-01 3 views
-2

4 시간 동안이 PL/SQL 코드를 디버깅하려고 시도했습니다. 나는 또한 여기에서 검색하려고했지만 너무 구체적이어서 도움이 필요하다. 여기에 내 코드가 있습니다. 실행하려고하면 두 가지 질문이 나타납니다. 두 번째 질문에 대답 한 후 오라클은 실행을 멈 춥니 다. 이 두 문제처럼단순 PL/SQL 코드가 실행되지 않습니다. 오류를 찾을 수 없습니다.

---- 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

오류 및 붙여 넣기 관련 SQL은 무엇입니까? – SMA

+0

기본 쿼리 실행 속도는 얼마나 빠릅니까? '보트에서 어디에서 선택하세요? '? 행운을 빕니다. – shellter

+0

G0d 술에 대한 코드를 들여 쓰기 ... – Sebas

답변

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

보인다. '||' 결국.

+0

나는 지난 두 가지를 꺼냈다...하지만 여전히 똑같은 일을한다. – Noob4sure

관련 문제