存储过程如下
...
as
DECLARE @Count int    -- 查找是否有相同名称的记录    
SELECT @Count = Count(ID) FROM TreesInformation 
WHERE   Username = @userName    
IF @Count = 0
insert into TreesInformation(ID,GUID,Username,Style,Babyhead,Wish,Wishdatetime,Wishto)
values(@id,@guid,@userName,@style,@babyHead,@wish,@wishDatetime,@wishto)
set @id = @@IDENTITY
return -1
go
怎样返回ID?

解决方案 »

  1.   

    存储过程如下 
    ... 
    as 
    DECLARE @Count int    -- 查找是否有相同名称的记录    
    SELECT @Count = Count(ID) FROM TreesInformation 
    WHERE  Username = @userName    
    IF @Count = 0 
    insert into TreesInformation(ID,GUID,Username,Style,Babyhead,Wish,Wishdatetime,Wishto) 
    values(@id,@guid,@userName,@style,@babyHead,@wish,@wishDatetime,@wishto) 
    set @id = @@IDENTITY 
    return -1 
    go 
    怎样返回ID?
    ======
    OUTPUT关键字
    不知道你这流程是想做什么的?
    如果没有重复,插入什么到什么表?返回重复ID?
      

  2.   

    set @id = @@IDENTITY 
    换成select @id  FROM TreesInformation 
    WHERE  Username = @userName    
      

  3.   

    当判断@Count=0时插入数据然后再加一句
    select 1
    否则
    select ID
    这样用ExecuteScalar()可以得到返回的值
    没有重复的得到1,有重复的得到ID
      

  4.   

    你传递参数的时候可以设置比如:@Id OUTPUT 在存储过程里面 SET @Id=(select  @@IDENTITY )
    这样在插入数据完成后。 int id=Convert.ToInt32(cmd.paramters["@Id"].Value) //这样就可以得到值.