我的存储过程为什么不能循环执行
我在应用程序中调用了一个添加记录的存储过程,可是第一篇执行时成功了,但再继续添加一个新的记录就报错。为什么啊?是不是我的存储过程写得有问题啊?存储过程如下:
CREATE PROCEDURE add_sch
@code int,
@name varchar(10),
@addr varchar(50),
@note varchar(50),
@flag varchar(1),
@ReturnNum int output
AS
set @ReturnNum = 0
if @@error<>0 return @ReturnNum
else
begin
insert into schools(sch_code,sch_name,sch_addr,sch_note,flag)
values(@code,@name,@addr,@note,@flag)
select @ReturnNum = 1
return @ReturnNum
end
GO
问题点数:0、回复次数:11Top
1 楼catling00(宁静致远)回复于 2003-12-03 16:02:26 得分 0
刚刚打错了,是第一遍执行成功了。Top
2 楼wzh1215(懒猫)回复于 2003-12-03 16:04:30 得分 0
不大明白,你的@ReturnNum即做输出参数又做返回参数干嘛!Top
3 楼catling00(宁静致远)回复于 2003-12-03 16:06:31 得分 0
做输出参数就是为返回服务的,因为应用程序要根据存储过程返回的参数来判断,做出相应的动作
Top
4 楼CrazyFor(冬眠的鼹鼠)回复于 2003-12-03 16:12:45 得分 0
报什么错误???Top
5 楼wzh1215(懒猫)回复于 2003-12-03 16:19:05 得分 0
--把你的过程改了下,看看对不对,code作为主键
CREATE PROCEDURE add_sch
@code int,
@name varchar(10),
@addr varchar(50),
@note varchar(50),
@flag varchar(1),
AS
declare @result int
if not exists(select 1 from schools where code=@code)
begin
insert into schools(sch_code,sch_name,sch_addr,sch_note,flag)
values(@code,@name,@addr,@note,@flag)
set @result=1
end
else
begin
set @result=0
end
return @result
GOTop
6 楼LoveSQL(努力奋斗ing)回复于 2003-12-03 16:26:30 得分 0
错误的原因有可能是你往表里插入第二条数据的时候,造成表的主键值不唯一或外键冲突,
检查一下看看。。。。。。Top
7 楼catling00(宁静致远)回复于 2003-12-03 16:29:42 得分 0
报错“List index out of bounds(3)”
to:wzh1215
语法出错,在AS附近
Top
8 楼catling00(宁静致远)回复于 2003-12-03 18:16:55 得分 0
to:wzh1215(四脚蛇)
改了一下用你的这段语法检查通过了。可是仍然不能二次添加记录。
各位高手老师们:报错“List index out of bounds(3)”是什么原因啊???Top
9 楼azsoft(Try my best)回复于 2003-12-03 20:10:12 得分 0
控件的List溢出Top
10 楼catling00(宁静致远)回复于 2003-12-05 15:42:50 得分 0
我用的是C++Builder,我用到的控件都没有List属性啊。快快,大家帮帮忙啊,我个问题已经困扰我三天了!谁帮我找出来问题所在50分全都给他(她)。Top
11 楼catling00(宁静致远)回复于 2003-12-05 15:43:46 得分 0
是不是存储过程中还要添加什么命令啊?我不是很熟啊。帮帮忙。先谢谢了
Top




