CREATE PROCEDURE forums_DisallowedName_CreateUpdateDelete
(
    @Name        
nvarchar(64),
    @Replacement     
nvarchar(64),
    @DeleteName    
bit = 0
)
AS
SET NOCOUNT ON
-- 上面一句的作用是‘使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。’,是不是可以理解为:@@ROWCOUNT将返回零
if( @DeleteName > 0 )
BEGIN
    
DELETE FROM
        forums_DisallowedNames
    
WHERE
        DisallowedName 
= @Name
END
ELSE 
BEGIN
        
UPDATE forums_DisallowedNames SET
            DisallowedName 
= @Replacement
        
WHERE
            DisallowedName 
= @Name

    
if( @@rowcount = 0 )
-- 如果我上面的理解正确的话,那上面那IF里的表达式不是恒真?
-- 如果我上面的理解不正确的话,那 SET NOCOUNT ON的真正作用是什么呢?
    
BEGIN
        
INSERT INTO forums_DisallowedNames (
            DisallowedName
        ) 
VALUES (
            @Name
        )
        
    
END
END
GO


posted on 2005-01-11 21:36  Lupin  阅读(1685)  评论(2编辑  收藏  举报