私は学生の平均点数を計算するプログラムを書きました:
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」ステートメント以降に到達しません。助けてください。
ここに記載されているように、SQL Developerで変数の値を印刷する場合、 SQL Developerを使用している場合は、VIEW _> DBMS_OUTPUTをオンにしてから、緑色のプラス記号をクリックして出力を有効にする必要があります。これは私のコンピューターで動作します。以前は動作していませんでしたが、現在実行していることを実行しています。これで、あなたが行ったコードは私のコンピューターで正常に機能し、次の出力が得られます。
Fail
Invalid Input
percentage is10
SQL_Plusの場合
serveroutputをオンに設定します
2つのことをします:
1)各ステートメントの後に出力をダンプするようにSQLPLUSに指示します2)sqlplusにdbms_output.enableを発行させます
編集:あなたの質問の2番目の入力は実際には大丈夫でした
Fail
grade c
percentage is41.25
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加