新人求帮助!谢谢各位大神

CatherineXueyan 2014-01-23 12:57:10
本人初学SQL,很多疑惑,求大神解答

1、什么情况下需要使用变量呢?

2、SET NOCOUNT ON SETNOCOUNT OFF是一起用还是分开呢?
例子
USE master
GO
SET NOCOUNT ON
DECLARE @startdate datetime, @adddays int
SET @startdate = '1/10/1900 12:00 AM'
SET @adddays = 5
SET NOCOUNT OFF
SELECT @startdate + 1.25 AS 'Start Date',
@startdate + @adddays AS 'Add Date'
下面是结果集:

Start Date Add Date
--------------------------- ---------------------------
Jan 11 1900 6:00AM Jan 15 1900 12:00AM

(1 row(s) affected)


在这个例子中为什么用了 SET NOCOUNT ON之后,还是有返回记录数?

...全文
126 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2014-01-23
  • 打赏
  • 举报
回复
把off放到最后
發糞塗牆 2014-01-23
  • 打赏
  • 举报
回复
USE master
GO
SET NOCOUNT ON
DECLARE @startdate datetime, @adddays int
SET @startdate = '1/10/1900 12:00 AM'
SET @adddays = 5

SELECT @startdate + 1.25 AS 'Start Date', 
   @startdate + @adddays AS 'Add Date'
   SET NOCOUNT OFF
發糞塗牆 2014-01-23
  • 打赏
  • 举报
回复
变量包含自定义和系统变量,但是系统变量不能改名字,这个你懂得,自定义的可以自己改,你可以用@a、@b这些,不过建议使用具有标识性的名字,最起码你自己知道这个变量是用来干嘛的
CatherineXueyan 2014-01-23
  • 打赏
  • 举报
回复
引用 10 楼 DBA_Huangzj 的回复:
完事请结贴
再问一个行吗?变量都是自定义的吗?自己给变量起名字?
CatherineXueyan 2014-01-23
  • 打赏
  • 举报
回复
引用 7 楼 yupeigu 的回复:
这样就不会再有返回记录了:
USE master
GO
SET NOCOUNT ON
DECLARE @startdate datetime, @adddays int
SET @startdate = '1/10/1900 12:00 AM'
SET @adddays = 5
--SET NOCOUNT OFF
SELECT @startdate + 1.25 AS 'Start Date', 
   @startdate + @adddays AS 'Add Date'
/*
   Start Date              Add Date
----------------------- -----------------------
1900-01-11 06:00:00.000 1900-01-15 00:00:00.000

*/
呵呵,谢谢回答,总算是懂了
發糞塗牆 2014-01-23
  • 打赏
  • 举报
回复
完事请结贴
CatherineXueyan 2014-01-23
  • 打赏
  • 举报
回复
引用 6 楼 DBA_Huangzj 的回复:
USE master GO SET NOCOUNT ON DECLARE @startdate datetime, @adddays int SET @startdate = '1/10/1900 12:00 AM' SET @adddays = 5 SET NOCOUNT OFF SELECT @startdate + 1.25 AS 'Start Date', @startdate + @adddays AS 'Add Date' 这个返回行数的原因是因为你提前关了NOCOUNT,而真正返回数据的是最后一个SELECT,前面的知识赋值而已。所以要么注释,要么把OFF移到最后
谢谢亲,弄明白了
發糞塗牆 2014-01-23
  • 打赏
  • 举报
回复
USE master GO SET NOCOUNT ON DECLARE @startdate datetime, @adddays int SET @startdate = '1/10/1900 12:00 AM' SET @adddays = 5 SET NOCOUNT OFF SELECT @startdate + 1.25 AS 'Start Date', @startdate + @adddays AS 'Add Date' 这个返回行数的原因是因为你提前关了NOCOUNT,而真正返回数据的是最后一个SELECT,前面的知识赋值而已。所以要么注释,要么把OFF移到最后
LongRui888 2014-01-23
  • 打赏
  • 举报
回复
这样就不会再有返回记录了:
USE master
GO
SET NOCOUNT ON
DECLARE @startdate datetime, @adddays int
SET @startdate = '1/10/1900 12:00 AM'
SET @adddays = 5
--SET NOCOUNT OFF
SELECT @startdate + 1.25 AS 'Start Date', 
   @startdate + @adddays AS 'Add Date'
/*
   Start Date              Add Date
----------------------- -----------------------
1900-01-11 06:00:00.000 1900-01-15 00:00:00.000

*/
發糞塗牆 2014-01-23
  • 打赏
  • 举报
回复
对于变量赋值可以看看我的文章http://blog.csdn.net/dba_huangzj/article/details/8503028
LongRui888 2014-01-23
  • 打赏
  • 举报
回复
修改一下,把SET NOCOUNT OFF注释掉: USE master GO SET NOCOUNT ON DECLARE @startdate datetime, @adddays int SET @startdate = '1/10/1900 12:00 AM' SET @adddays = 5 --SET NOCOUNT OFF SELECT @startdate + 1.25 AS 'Start Date', @startdate + @adddays AS 'Add Date'
發糞塗牆 2014-01-23
  • 打赏
  • 举报
回复
1、什么情况下需要使用变量呢?一般来说,需要临时存储一个值时会用到,比如我把select top 1 name from tb ,我想把那个name先存起来的时候可以用变量 2、最好配套使用

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧