2014-10-10 44 views
-1

我有一個寫一個程序來計算學生的平均分數:我的PL/SQL塊有什麼問題?

DECLARE 
    rno NUMBER(10); 
    wt NUMBER(10); 
    dbms NUMBER(10); 
    se NUMBER(10); 
    toc NUMBER(10); 
    per FLOAT(10); 
    total NUMBER(10); 
BEGIN 
    rno := &rno; 
    wt := &wt; 
    dbms := &dbms; 
    se := &se; 
    toc := &toc; 

    IF(wt < 40 OR se < 40 OR toc < 40 OR dbms < 40) THEN 

     dbms_output.Put_line('Fail'); 
     total := (wt + se + toc + dbms); 
     per := (total/400) * 100; 

     IF(per > 75) THEN 
      dbms_output.Put_line('grade A'); 
     ELSIF(per > 65 AND per < 75) THEN 
      dbms_output.Put_line('grade B'); 
     ELSIF(per > 40 AND per < 65) THEN 
      dbms_output.Put_line('grade c'); 
     ELSE 
      dbms_output.Put_line('Invalid Input'); 
     END IF; 

     dbms_output.Put_line('percentage is' ||per); 
    END IF; 
END; 
/

有程序中沒有錯誤。但是程序的輸出如下:

Enter value for rno: 1 
old 10: rno:=&rno; 
new 10: rno:=1; 
Enter value for wt: 23 
old 11: wt:=&wt; 
new 11: wt:=23; 
Enter value for dbms: 56 
old 12: dbms:=&dbms; 
new 12: dbms:=56; 
Enter value for se: 74 
old 13: se:=&se; 
new 13: se:=74; 
Enter value for toc: 84 
old 14: toc:=&toc; 
new 14: toc:=84; 

PL/SQL procedure successfully completed. 

SQL>/
Enter value for rno: 2 
old 10: rno:=&rno; 
new 10: rno:=2; 
Enter value for wt: 45 
old 11: wt:=&wt; 
new 11: wt:=45; 
Enter value for dbms: 25 
old 12: dbms:=&dbms; 
new 12: dbms:=25; 
Enter value for se: 73 
old 13: se:=&se; 
new 13: se:=73; 
Enter value for toc: 22 
old 14: toc:=&toc; 
new 14: toc:=22; 

PL/SQL procedure successfully completed. 

該程序沒有達到'if'語句和進一步。請幫忙。

+1

你確定它不是?在上一次結束之前放置一條調試線。 – mmmmmpie 2014-10-10 14:21:23

+0

我們如何放置調試線。 – 2014-10-10 14:51:18

+0

我的回答編輯 – Rika 2014-10-10 15:16:37

回答

1

就像這裏說的Printing the value of a variable in SQL Developer,如果您使用的是SQL Developer,則必須打開VIEW _> DBMS_OUTPUT,然後單擊綠色加號以啓用輸出。這適用於我的電腦,它以前不工作,但正在做你現在正在做的事情。現在,你的代碼做我的電腦上的精品工程,我得到的輸出:

Fail 
Invalid Input 
percentage is10 

對於SQL_Plus

集SERVEROUTPUT上

做兩件事情:

1)告訴SQLPLUS到在每個語句後轉儲輸出 2)它使得sqlplus發出dbms_output.enable

編輯:你的問題的第二個輸入其實很好

Fail 
grade c 
percentage is41.25 
+0

我忘了將serveroutput設置爲開。謝謝 – 2014-10-10 15:18:01

+0

@TejasTamkahne沒問題,你的輸入很好,應該爲你輸入的第二個輸入獲得C級。 – Rika 2014-10-10 15:21:16