首页 > 数据库 >SQL查临时表没有返回数据集

SQL查临时表没有返回数据集

时间:2022-09-22 10:48:43浏览次数:55  
标签:返回 语句 SET NOCOUNT 临时 信息 SQL

转载:https://www.cnblogs.com/remember-forget/p/6089467.html

问题描述:在SQL中可以查询到数据,返回不到页面上。

解决办法:

set nocount on
create table #list

 

有一种说法:
前台一般是一个返回就当一个结果集, 不管这个返回是结果集, 还是操作的反馈信息. 

为了保证前台得到的只是真实的记录集, 而不是反馈信息, 因此得使用 set nocount on
多说两句: 

1:在查看SqlServer的帮助的时候,要注意“权限”这一节,因为某些语句是需要一定的权限的,而我们往往忽略。 

2:@@ROWCOUNT是返回受上一语句影响的行数,包括找到记录的数目、删除的行数、更新的记录数等,不要认为只是返回查找的记录数目,而且@@ROWCOUNT要紧跟需要判断语句,否则@@ROWCOUNT将返回0。

 

【转】

每次我们在使用查询分析器调试SQL语句的时候,通常会看到一些信息,提醒我们当前有多少个行受到了影响,这是些什么信息?在我们调用的时候这些信息有用吗?是否可以关闭呢? 

答案是这些信息在我们的客户端的应用程序中是没有用的,这些信息是存储过程中的每个语句的DONE_IN_PROC 信息。 

我们可以利用SET NOCOUNT 来控制这些信息,以达到提高程序性能的目的。 

MSDN中帮助如下: 

SET NOCOUNT 
使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。 

语法 
SET NOCOUNT { ON | OFF } 

注释 
当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。 

即使当 SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数。 

当 SET NOCOUNT 为 ON 时,将不给客户端发送存储过程中的每个语句的 DONE_IN_PROC 信息。当使用 Microsoft SQL Server 提供的实用工具执行查询时,在 Transact-SQL 语句(如 SELECT、INSERT、 UPDATE 和 DELETE)结束时将不会在查询结果中显示"nn rows affected"。 

如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。 

SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。 

权限 
SET NOCOUNT 权限默认授予所有用户。 

结论:我们应该在存储过程的头部加上SET NOCOUNT ON 这样的话,在退出存储过程的时候加上 SET NOCOUNT OFF这样的话,以达到优化存储过程的目的。 

 

标签:返回,语句,SET,NOCOUNT,临时,信息,SQL
From: https://www.cnblogs.com/zouhao/p/16718345.html

相关文章

  • Mysql ibdata 丢失或损坏如何通过frm&ibd 恢复数据
    mysql存储在磁盘中,各种天灾人祸都会导致数据丢失。大公司的时候我们常常需要做好数据冷热备,对于小公司来说要做好所有数据备份需要支出大量的成本,很多公司也是不现实的。万......
  • centos7下使用yum安装mysql
    CentOS7的yum源中默认好像是没有mysql的。为了解决这个问题,我们要先下载mysql的repo源。1.下载mysql的repo源$wget http://repo.mysql.com/mysql-community-release-e......
  • MySQL基本命令
    一、mysql服务的启动和停止netstopmysqlnetstartmysql二、 登陆mysql语法如下:mysql-u用户名-p用户密码键入命令mysql-uroot-p,回车后提示你输入密码,输入12345,......
  • 使用Sql生成测试数据
    无论您是在用原型证明某一概念,还是开发一个全新的应用程序,或者只是学习SQL,您都需要在您的应用程序上运行测试数据。本文讨论了如何生成足够的、对测试有用的、具有期望......
  • MySQL DDL执行方式-Online DDL介绍
    1引言大家好,今天与大家一起分享一下mysqlDDL执行方式。一般来说MySQL分为DDL(定义)和DML(操作)。DDL:DataDefinitionLanguage,即数据定义语言,那相关的定义操作就是DDL,包......
  • MySQL最大连接数设置
    在使用MySQL数据库的时候,经常会遇到这么一个问题,就是“CannotconnecttoMySQLserver. Toomanyconnections”-mysql1040错误,这是因为访问MySQL且还未释放的连接数目......
  • 如何在SQL SERVER 2005中修改系统表
    在SQLServer2000中修改系统表的方法一般大家都知道,但SQLServer2005的控制更为严格,处理起来比较麻烦。 SQLServer2005修改系统表的分两步: 1.在单用户模式下启......
  • MYSQL备份(直接拷贝数据库文件
    目的:把A机中的库转移到B机中。1、停止mysql服务,在A机mysql安装目录下,找到my.ini文件打开,在此文件中找到datadir,把这个路径下的数据文件:ibdata1以及所有文件夹拷贝到B机中d......
  • MySQL数据库不能远程访问的解决办法
    MySQL数据库不允许从远程访问怎么办?本文提供了三种解决方法:1、改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mys......
  • 记Mybatis动态sql
    目录记MyBatis动态SQL1.<SQL>标签2.<if>标签3.分支标签1.第一种:用在查询条件上用choose-when;otherwise可不要2.第二种case-when:用在查询结果上3.case-when的特殊用法......