sqlserver2005存储过程问题,急

猿猿猿媛 2014-05-31 09:47:27
--存储过程
create procedure saveCourse
@v_sno varchar(15), --定义两个输入参数
@v_cno varchar(6),
@num int output --定义个返回值
as
begin
select @num=remain from course where cno=v_cno;
if @num>0 then --如果人数大于0,则执行下面操作
insert into sc values(v_sno,v_cno);
update course set remain=remain-1 where cno=v_cno;
update register set number=number+1 where cno=v_cno;
end if;
end saveCourse;


执行报错


麻烦大家帮我看看语法哪里出错了。
我之前只学过oracle的pl/sql,现在课程设计要求用sqlserver2005
我是想用这个存储过程实现多表的crud,如果返回的num结果是<0,则执行不成功

...全文
111 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
习惯性蹭分 2014-06-01
  • 打赏
  • 举报
回复
mssql的语法应该如下:

--存储过程
create procedure saveCourse
@v_sno varchar(15), --定义两个输入参数
@v_cno varchar(6),
@num int output  --定义个返回值
as
begin
select @num=remain from course where cno=v_cno;  --你这里是不是要用 @v_cno 参数
if @num>0   --如果人数大于0,则执行下面操作   if 条件begin .... end
begin 
insert into sc values(v_sno,v_cno);  ---这里也是  @v_sno,@v_cno 
update course set remain=remain-1 where cno=v_cno;   --你这里是不是要用 @v_cno 参数  
update register set number=number+1 where cno=v_cno; --你这里是不是要用 @v_cno 参数
end  
end  
kevin87923 2014-06-01
  • 打赏
  • 举报
回复
if 条件 begin ... end
insert into sc values(v_sno,v_cno);   v_sno,v_cno这两值哪来的 
猿猿猿媛 2014-06-01
  • 打赏
  • 举报
回复
引用 2 楼 tangguangqiang 的回复:
mssql的语法应该如下:

--存储过程
create procedure saveCourse
@v_sno varchar(15), --定义两个输入参数
@v_cno varchar(6),
@num int output  --定义个返回值
as
begin
select @num=remain from course where cno=v_cno;  --你这里是不是要用 @v_cno 参数
if @num>0   --如果人数大于0,则执行下面操作   if 条件begin .... end
begin 
insert into sc values(v_sno,v_cno);  ---这里也是  @v_sno,@v_cno 
update course set remain=remain-1 where cno=v_cno;   --你这里是不是要用 @v_cno 参数  
update register set number=number+1 where cno=v_cno; --你这里是不是要用 @v_cno 参数
end  
end  
谢谢,测试通过了,但是最后一条语句
update register set number=number+1 where cno=v_cno; --你这里是不是要用 @v_cno 参数
没有执行,请问怎么破

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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