plsql - 我的 if 语句在我的 addme 过程中不起作用,但其他一切都很好。在 PLSQL 中
问题描述
我的 if 语句在我的 addme 过程中不起作用,但其他一切都很好。我试图在另一个 if 语句之前使用一个 if 语句,以便只检查前三个而不是检查所有五个。如果前三个为空,则检查接下来的两个,如果为空则注册,如果不是,则显示错误消息。
第 22-42 行
create or replace procedure addme(
2 p_snum students.snum%type,
3 p_callnum schclasses.callnum%type) as
4 v_errormsg varchar2(1000);
5 v_errortxt varchar2(1000);
6
7 begin
8
9
10 checks#(p_snum, v_errortxt);
11
12 v_errormsg:=v_errortxt;
13
14 checkcall#(p_callnum, v_errortxt);
15
16 v_errormsg:=v_errormsg ||' '|| v_errortxt;
17
18 already_enrolled(p_snum, p_callnum, v_errortxt);
19
20 v_errorMsg:=v_errormsg ||' '||v_errortxt;
21
22 if v_errormsg is null then
23
24 checkstand(p_snum, p_callnum, v_errortxt);
25
26 v_errormsg:=v_errortxt;
27
28 checkcapacity(p_snum, p_callnum, v_errortxt);
29
30 v_errorMsg:=v_errormsg || v_errortxt;
31
32
33 if v_errormsg is null then
34
35 insert into enrollments values (p_snum, p_callnum, null);
36 dbms_output.put_line('You have successfully enrolled in course number ' || p_callnum);
37
38 end if;
39 else
40 dbms_output.put_line(v_errorMsg);
41
42 end if;
43
44 end;
45 /
Procedure created.
SQL> select * from enrollments;
SNU CALLNUM GR
--- ---------- --
101 10110 F
102 10150 B
103 10155 A
101 10125
102 10130
102 10115
103 10115
7 rows selected.
SQL>
SQL> set serveroutput on
SQL> exec addme(101, 10125)
Sorry, the student with number 101 already enrolled in class number 10125.
PL/SQL procedure successfully completed.
SQL>
SQL> set serveroutput on
SQL> exec addme(109, 10125)
Student number 109 is invalid.
PL/SQL procedure successfully completed.
SQL>
SQL>
SQL> set serveroutput on
SQL> exec addme(101, 99525)
Call Number 99525 is invalid
PL/SQL procedure successfully completed.
SQL>
SQL> set serveroutput on
SQL> exec addme(109, 99525)
Student number 109 is invalid. Call Number 99525 is invalid
PL/SQL procedure successfully completed.
SQL>
SQL> set serveroutput on
SQL> exec addme(103, 10125)
PL/SQL procedure successfully completed.
SQL>
SQL> select * from enrollments;
SNU CALLNUM GR
--- ---------- --
101 10110 F
102 10150 B
103 10155 A
101 10125
102 10130
102 10115
103 10115
7 rows selected.
解决方案
推荐阅读
- docker - 在单个服务器上运行 Kubernetes 有意义吗?
- angular - 自定义结构指令创建了太多元素
- css - 自定义选择框有大选项框
- php - MySQL 在 PHP 上使用外键显示结果
- mysql - mySql 等级排序从到
- javascript - 按下按钮html和javascript时如何将文本发送到指定的电子邮件地址
- flutter - 在 Flutter 中更新 StreamController 内的 TextFormField
- angular - 滑动时垫滑块值未更新
- python - PYTHON:如何在 python 文本中显示点
- c - 该程序打印“hello”而不是“Hi”。如何?