SET NOCOUNT 的怪问题

原创 2008年01月20日 07:03:00
/**//*-- SET NOCOUNT 的问题

SQL 版本: SQL Server 2005 3159

故障描述:
当满足下述条件时, SET NOCOUNT 导致 TRY ... CATCH 无法正确处理错误
1. 使用 EXEC(<SQl>) AT <Linked Server> 或者 EXEC <Linked Server>.<database name>.dbo.sp_executesql <SQl>
2. <SQL> 中包括输出参数
3. <SQL> 中包括 SET NOCOUNT ON 和 USE <Database Name> 语句(注意不能更换出现次序)

具体的参考下面的测试示例

与此问题相关的帖子:
http://topic.csdn.net/u/20080103/12/3dafc07c-3376-40c1-b4bd-7cbd76afed1a.html?seed=182508736
--
*/

-- 添加链接服务器
EXEC sp_addlinkedserver  'srv_lnk','','SQLOLEDB','.'
EXEC sp_serveroption 'srv_lnk','rpc out','true'    
GO

-- 测试语句
--
SET NOCOUNT ON
BEGIN TRY
    
DECLARE
            
@error_number int,
            
@error_message nvarchar(2048)

    
EXEC(N'
SET NOCOUNT ON

USE tempdb

BEGIN TRY
    DELETE FROM [NEWID()]
END TRY
BEGIN CATCH
    SELECT
        ? = ERROR_NUMBER(),
        ? = ERROR_MESSAGE()
END CATCH
',
    
@error_number OUTPUT,
    
@error_message OUTPUT
    )AT srv_lnk
END TRY
BEGIN CATCH
    
SELECT 
        
2
        ERROR_NUMBER(),
        ERROR_MESSAGE()
END CATCH
GO

-- 删除链接服务器
EXEC sp_dropserver 'srv_lnk''droplogins'
GO
 

SET NOCOUNT { ON | OFF }实用讲解

使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息 语法:SET NOCOUNT { ON | OFF } 默认情况下为 OFF 当 SET NOCOUNT 为 O...

SET NOCOUNT ON 作用

 在存储过程中,经常用到SET NOCOUNT ON; 作用:阻止在结果集中返回显示受T-SQL语句或则usp影响的行计数信息。 当SET ONCOUNT ON时候,不返回计数,当SET N...

T-SQL中的SET NOCOUNT ON

使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息  语法:SET NOCOUNT { ON | OFF }  默认情况下为 OFF 当 SET NOCOUNT 为 ON...

sql server 设置SET NOCOUNT

SET NOCOUNT { ON | OFF } 设置返回的结果中是否包含受 Transact-SQL 语句影响的行数的信息默认情况下为 OFF 当 SET NOCOUNT 为 ON 时,不返回计数(...

SQL Server中通过设置SET NOCOUNT来优化存储过程

本文摘自:http://database.51cto.com/art/201108/283177.htm SQL Server数据库中SET NOCOUNT可以设置查询分析器调试SQL语句时的一...

Sql 2008 Study for one ------INTERSECT AND EXCEPT Remark Set NOCount OFF/ON

最近由于用到sql 比较多,发现自己对sql server 居然一窍不通,所以做做笔记认真学习。例子是sqlserver2008高级编程的。 CREATE TABLE UnionTest1 ( ...

SET NOCOUNT (Transact-SQL)含义

阻止在结果集中返回可显示受 Transact-SQL 语句或存储过程影响的行计数的消息。  语法 SET NOCOUNT { ON | OFF } 当 SET NOCOU...

SET NOCOUNT ON | OFF

使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息 语法:SET NOCOUNT { ON | OFF } 默认情况下为 OFF 当 SET NOCOUNT 为 ON ...

SET NOCOUNT ON作用

在存储过程中,经常用到SET NOCOUNT ON; 作用:阻止在结果集中返回显示受T-SQL语句或则usp影响的行计数信息。 当SET ONCOUNT ON时候,不返回计数,当SET NOC...
  • hjdlc99
  • hjdlc99
  • 2017年05月15日 10:02
  • 191

Mysql中文乱码问题完美解决方案【需要在my.cnf文件中设置client和mysqld的default-character-set=utf8,建数据库和表的时候也需要制定好编码】

原文:http://www.2cto.com/database/201108/101151.html MySQL会出现中文乱码的原因不外乎下列几点: 1.server本身设定问题,例如还停留在lat...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SET NOCOUNT 的怪问题
举报原因:
原因补充:

(最多只允许输入30个字)