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

bravetian 2017-07-31 08:50:35
create or replace procedure ADMIN.p_selectCourse(
p_teachId in number,
p_courseNumber in varchar2(20),
p_studentNumber in varchar2(18),
p_error out number )
is
i INTEGER;
begin
select studentMaxNumber into i from publicCourseTeach where teachId=p_teachId;
SAVEPOINT p1;
if i> 0 then
update publicCourseTeach set studentMaxNumber=studentMaxNumber-1 where teachId=p_teachId ;
insert into studentSelectCourseInfo(studentNumber,courseNumber) values(p_studentNumber,p_courseNumber) ;
commit ;
if sqlcode == 0 then
p_error:=1;
dbms_output.put_line(p_error);
else
rollback to p1;
p_error:=0;
dbms_output.put_line(p_error);
end if;
else
p_error:=-1;
dbms_output.put_line(p_error);
end if;
end ;
...全文
308 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
S_Pony 2017-08-10
  • 打赏
  • 举报
回复
调用这个存储在去commit 。
卖水果的net 2017-07-31
  • 打赏
  • 举报
回复
只留框架当然不行了,begin end中间,最少要有一条语句。 如果实在没得写,要写成这样 begin null; end
bravetian 2017-07-31
  • 打赏
  • 举报
回复
重点是 我把中间部分都注释掉了,只留框架都通不过。。。。
卖水果的net 2017-07-31
  • 打赏
  • 举报
回复
p_courseNumber in  varchar2(20),  p_studentNumber in  varchar2(18), 参数,只写类型,不要写长度。
卖水果的net 2017-07-31
  • 打赏
  • 举报
回复
    if sqlcode == 0 then 写一个等号就可以了。
bravetian 2017-07-31
  • 打赏
  • 举报
回复
改了 还是不通过
imcmuc 2017-07-31
  • 打赏
  • 举报
回复
确保studentMaxNumber只有一个值返回 if中的等于就是=
cherrx 2017-07-31
  • 打赏
  • 举报
回复
回退至保存点,必须是在没有commit之前,commit之后,保存点就没有意义了

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧