SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GOALTER       Proc [AddAGroup]
@Title NvarChar(50), 
@AllowNoneApproval tinyInt, 
@DomainName NvarChar(50), 
@Description NvarChar(500), 
@BgImage NvarChar(200), 
@GroupRules NvarChar(500), 
@SubTitle NvarChar(50), 
@Logo NvarChar(200),
@creator NvarChar(50),
@creatorid Int,
@groupid Int Output
As 
begin transaction
INSERT INTO [Group] 
 ( 
 [Title],
 [allowNoneApproval],
 [DomainName],
 [Description],
 [bgImage],
 [MemberCount],
 [TopicCount],
 [Hits],
 [GroupRules],
 [subTitle],
 [Logo],
createDate
 ) 
 
VALUES 

 @Title,
 @allowNoneApproval,
 @DomainName,
 @Description,
 @bgImage,
 1,
 0,
 0,
 @GroupRules,
 @subTitle,
 @Logo,
getdate()
 )
if(@@error<>0)
begin
rollback transaction
return -1
endSet @groupid=@@IDENTITYINSERT INTO [GroupMember] 
(
[UserId],
[GroupId],
[GroupMemberType],
[username]
)
VALUES 
(
@creatorid,
@groupid,
1,
@creator
)
if(@@error<>0)
begin
rollback transaction
return -1
endcommit transaction
return @groupid
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

解决方案 »

  1.   

    ALTER       Proc [AddAGroup]
    @Title        NvarChar(50), 
    @AllowNoneApproval    tinyInt, 
    @DomainName    NvarChar(50), 
    @Description    NvarChar(500), 
    @BgImage    NvarChar(200), 
    @GroupRules    NvarChar(500), 
    @SubTitle    NvarChar(50), 
    @Logo        NvarChar(200),
    @creator    NvarChar(50),
    @creatorid    Int,
    @groupid    Int    Output
    As SET XACT_ABORT ONbegin transaction
        INSERT INTO [Group] 
             ( 
             [Title],
             [allowNoneApproval],
             [DomainName],
             [Description],
             [bgImage],
             [MemberCount],
             [TopicCount],
             [Hits],
             [GroupRules],
             [subTitle],
             [Logo],
            createDate
             ) 
         
        VALUES 
            ( 
             @Title,
             @allowNoneApproval,
             @DomainName,
             @Description,
             @bgImage,
             1,
             0,
             0,
             @GroupRules,
             @subTitle,
             @Logo,
            getdate()
             )
    /*
    if(@@error<>0)
        begin
            rollback transaction
            return -1
        end
    */Set @groupid=@@IDENTITYINSERT INTO [GroupMember] 
            (
            [UserId],
            [GroupId],
            [GroupMemberType],
            [username]
            )
    VALUES 
            (
            @creatorid,
            @groupid,
            1,
            @creator
            )/*
    if(@@error<>0)
        begin
            rollback transaction
            return -1
        end
    */commit transaction
    --return @groupidSET XACT_ABORT OFFGO
      

  2.   

    OUPUT参数不用RETURN。
    RETURN是返回值,永远是整数。
      

  3.   

    这个会引出孤立事务吗???http://computer.stuun.cn/sanjikaoshi/shujuku/118572747137006_2.html,
    看了这篇文章,我很害怕