随笔 - 27  文章 - 4 评论 - 45 trackbacks - 0
<2005年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345


与我联系

常用链接

留言簿(2)

我参与的团队

随笔分类

随笔档案

文章分类

文章档案

收藏夹

技术站点

日常站点

设计站点

搜索

  •  

最新评论

阅读排行榜

评论排行榜

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 阅读(943) 评论(2)  编辑 收藏

FeedBack:
#1楼  2005-01-11 21:48 linnchord [未注册用户]
SET NOCOUNT 为 ON 只是不返回Transact-SQL 语句影响的行数

@@ROWCOUNT仍然会更新

  回复  引用    
#2楼 [楼主] 2005-01-11 21:50 丘陵狼      
哦,明白!谢谢楼上!
  回复  引用  查看    

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2005-01-12 00:42 编辑过
 
另存  打印