我是新手,希望大家帮忙啊。。ALTER  PROCEDURE [dbo].[PROC_AddNewFavorite]
    @NickName NVARCHAR(20),
    @TopicID INT
AS-- 用户不能收藏自己发送的主题
IF EXISTS(SELECT -1
            FROM [VIEW_ListTopic]
           WHERE [FromUser]=@NickName AND [TopicID]=@TopicID)
BEGIN
    -- 退出存储过程
    RETURN
END-- 用户不能重复的将主题加入收藏夹
IF EXISTS(SELECT -1
            FROM [Bincess_Favorite]
           WHERE [NickName]=@NickName AND [TopicID]=@TopicID)
BEGIN
    -- 退出存储过程
    RETURN
END-- 插入主题到收藏夹
INSERT INTO [Bincess_Favorite]([NickName], [TopicID])
     VALUES(@NickName, @TopicID)都已经END了,为什么还可以继续写IF EXISTS(select............) 都已经END了还可以INSERT INTO [...

解决方案 »

  1.   

    这里的End只是一个段落的结束,不是整个过程的结束IF EXISTS(SELECT -1
                FROM [VIEW_ListTopic]
               WHERE [FromUser]=@NickName AND [TopicID]=@TopicID)
    BEGIN
        -- 退出存储过程
        RETURN-- 用户不能重复的将主题加入收藏夹
    IF EXISTS(SELECT -1
                FROM [Bincess_Favorite]
               WHERE [NickName]=@NickName AND [TopicID]=@TopicID)
    BEGIN
        -- 退出存储过程
        RETURN
    END-- 插入主题到收藏夹
    INSERT INTO [Bincess_Favorite]([NickName], [TopicID])
         VALUES(@NickName, @TopicID)END
      

  2.   

    ALTER  PROCEDURE [dbo].[PROC_AddNewFavorite]
        @NickName NVARCHAR(20),
        @TopicID INT
    ASIF (not EXISTS(SELECT 1
                FROM [VIEW_ListTopic]
               WHERE [FromUser]=@NickName AND [TopicID]=@TopicID) )
    and ( not EXISTS(SELECT 1
                FROM [Bincess_Favorite]
               WHERE [NickName]=@NickName AND [TopicID]=@TopicID) )INSERT INTO [Bincess_Favorite]([NickName], [TopicID])
         VALUES(@NickName, @TopicID)