这是我的存储结构的代码Create proc Insert_Locuser
@LocusID int,
@LocusName nchar(10),
@Area float,
@rtn3 int output,
@rtn1 int output,
@rtn2 int outputas
declare@temLocusID int,
@temLocusName nchar(10),
@temArea floatif exists(select * from Locus where LocusID=@LocusID)beginselect @temLocusID=LocusID,@temLocusName=LocusName,@temArea=Areafrom Locus where LocusID=@temLocusIDif ((@temLocusID=@LocusID)and(@temLocusName=@LocusName)and(@temArea=@Area))
begin
set @rtn3=0
end
else
begin
update Locus set LocusID=@LocusID,LocusName=@LocusName,Area=@Area
set @rtn1=2
end
end
else
begin 
insert into Locus values (@LocusID,@LocusName,@Area)
set @rtn2=1
enddeclare @rtn3 int
exec sp_Insert_Locuser '21','常德',14,@rtn3 output
if @rtn1=0
print '不能插入相同数据'
else if @rtn2=1
print '插入成功'
else
print '更新成功'但是一直出这个问题,百度 Google也没好的解决办法,所以小弟特来请教CSDN上的高手,希望大家帮帮我这个新人,感激不尽

解决方案 »

  1.   

    Create proc Insert_Locuser
    @LocusID int,
    @LocusName nchar(10),
    @Area float,
    @rtn3 int output,
    @rtn1 int output,
    @rtn2 int outputas
    declare@temLocusID int,
    @temLocusName nchar(10),
    @temArea floatif exists(select * from Locus where LocusID=@LocusID)beginselect @temLocusID=LocusID,@temLocusName=LocusName,@temArea=Areafrom Locus where LocusID=@temLocusIDif ((@temLocusID=@LocusID)and(@temLocusName=@LocusName)and(@temArea=@Area))
    begin
    set @rtn3=0
    end
    else
    begin
    update Locus set LocusID=@LocusID,LocusName=@LocusName,Area=@Area
    set @rtn1=2
    end
    end
    else
    begin  
    insert into Locus values (@LocusID,@LocusName,@Area)
    set @rtn2=1
    enddeclare @rtn4 int
    exec sp_Insert_Locuser '21','常德',14,@rtn4 output
    if @rtn1=0
    print '不能插入相同数据'
    else if @rtn2=1
    print '插入成功'
    else
    print '更新成功'
      

  2.   

    @rtn3 已经定义了 所以重新定义一个@rtn4
      

  3.   

    @rtn3 已经定义了
      

  4.   

    继续请教下高手   我改了之后 现在就出这样的问题了
    无法为当前对象而将行添加到 sysdepends,因为此对象所依赖的对象 'sp_Insert_Locuse' 缺失。仍将创建此对象。这个是怎么回事啊!我也是刚接触数据库,这个不了解,高手多多指教,小弟感激不尽
      

  5.   

    Create proc Insert_Locuser
    @LocusID int,
    @LocusName nchar(10),
    @Area float,
    @rtn3 int output,
    @rtn1 int output,
    @rtn2 int outputas
    declare@temLocusID int,
    @temLocusName nchar(10),
    @temArea floatif exists(select * from Locus where LocusID=@LocusID)beginselect @temLocusID=LocusID,@temLocusName=LocusName,@temArea=Area from Locus where LocusID=@temLocusIDif ((@temLocusID=@LocusID)and(@temLocusName=@LocusName)and(@temArea=@Area))
    begin
    set @rtn3=0
    end
    else
    begin
    update Locus set LocusID=@LocusID,LocusName=@LocusName,Area=@Area
    set @rtn1=2
    end
    end
    else
    begin 
    insert into Locus values (@LocusID,@LocusName,@Area)
    set @rtn2=1
    end
    exec sp_Insert_Locuser '21','常德',14,@rtn3 OUTPUTif @rtn1=0
    print '不能插入相同数据'
    else if @rtn2=1
    print '插入成功'
    else
    print '更新成功'
     Create proc Insert_Locuser
    @LocusID int,
    @LocusName nchar(10),
    @Area float,
    @rtn3 int output,
    @rtn1 int output,
    @rtn2 int outputas傳參變量在內容里不需要重新聲明變量,直接用就行了
      

  6.   


     你这里要输出参数 应该用 exec sp_executesql
      

  7.   

    既然声明了output参数 也可以直接使用
      

  8.   


    sp_helptext sp_Insert_Locuse--看看是否有表不存在或視圖不存在