如何在SQL Server中的SELECT TOP 中使用变量

        数据库环境: Sql Server 2005

        查询语句类似:

       SELECT TOP XX * FROM tbl ...

       以前使用时,这种查询一般都是在程序中拼好Sql语句再执行,这次打算在存储过程中,用参数传入查询行数,使用类似:

        SELECT TOP @queryCount * FROM tbl

         可编译时报错:

消息 102,级别 15,状态 1,第 3 行
'@queryCount' 附近有语法错误。

        郁闷死,在百度上搜搜,发现不少类似问题,而解决的方法,一般有两种:

        1、在查询前,设置 SET ROWCOUNT @queryCount,查询接受后,重新设置成0

        2、在存储过程拼Sql,然后 Exec

        不甘心啊,仔细阅读SqlServer帮助文档,从 SELECT 语句,按照帮助连接,又查到 TOP 帮助,连接地址为:

ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/html/da983c0a-06c5-4cf8-a6a4-7f9d66f34f2c.htm

语法

 
[ 
     TOP (expression) [PERCENT]
     [ WITH TIES ]
]

      注意:expression 是在一对圆括号内的,而之后又有如下的例子

在 TOP 中使用变量

以下示例使用变量获得 AdventureWorks 数据库的 dbo.Employee 表中列出的前 10 个雇员。

 复制代码
USE AdventureWorks ;
GO
DECLARE @p AS int
SET @p='10'
SELECT TOP(@p)*
FROM HumanResources.Employee;
GO

          到此,感觉问题终于可以解决了,再在 Sql查询分析器中测试,只要将变量放到圆括号内,则没有任何问题!

        感叹:

         1、规范、严谨,无论语法还是示例,文档中 TOP 后面的表达式,全都是在圆括号内的,我们的Sql语句往往不够规范,而不规范的语句,可能一般情况下没问题,但某些情况下

          2、认真学习,我们程序员,往往这样,只要应用中能凑合着过去,对技术问题却不求甚解,就像这个问题,Sql Server 帮助中,不论语法,还是示例,都明明白白清清楚楚,而我们很多人,包括我,都难得能沉下心去研读这些基本的技术文档。看来,如有空闲,应该多看看书,充充电啊!

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值