Oracle存储过程 编译有警告,帮忙看看错在哪了?

[复制链接]
查看11 | 回复8 | 2021-1-27 06:31:05 | 显示全部楼层 |阅读模式
createorreplaceprocedureADMIN.p_selectCourse(
p_teachIdinnumber,
p_courseNumberinvarchar2(20),
p_studentNumberinvarchar2(18),
p_erroroutnumber)
is
iINTEGER;
begin
selectstudentMaxNumberintoifrompublicCourseTeachwhereteachId=p_teachId;
SAVEPOINTp1;
ifi>0then
updatepublicCourseTeachsetstudentMaxNumber=studentMaxNumber-1whereteachId=p_teachId;
insertintostudentSelectCourseInfo(studentNumber,courseNumber)values(p_studentNumber,p_courseNumber);
commit;
ifsqlcode==0then
p_error:=1;
dbms_output.put_line(p_error);
else
rollbacktop1;
p_error:=0;
dbms_output.put_line(p_error);
endif;
else
p_error:=-1;
dbms_output.put_line(p_error);
endif;
end;
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:31:05 | 显示全部楼层
回退至保存点,必须是在没有commit之前,commit之后,保存点就没有意义了
回复

使用道具 举报

千问 | 2021-1-27 06:31:05 | 显示全部楼层
确保studentMaxNumber只有一个值返回
if中的等于就是=
回复

使用道具 举报

千问 | 2021-1-27 06:31:05 | 显示全部楼层
改了还是不通过
回复

使用道具 举报

千问 | 2021-1-27 06:31:05 | 显示全部楼层
if sqlcode == 0 then
写一个等号就可以了。
回复

使用道具 举报

千问 | 2021-1-27 06:31:05 | 显示全部楼层
p_courseNumber invarchar2(20),
p_studentNumber invarchar2(18),
参数,只写类型,不要写长度。
回复

使用道具 举报

千问 | 2021-1-27 06:31:05 | 显示全部楼层
重点是我把中间部分都注释掉了,只留框架都通不过。。。。
回复

使用道具 举报

千问 | 2021-1-27 06:31:05 | 显示全部楼层
只留框架当然不行了,beginend中间,最少要有一条语句。
如果实在没得写,要写成这样
begin
null;
end
回复

使用道具 举报

千问 | 2021-1-27 06:31:05 | 显示全部楼层
调用这个存储在去commit。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行