博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何在SQL Server中的SELECT TOP 中使用变量
阅读量:6684 次
发布时间:2019-06-25

本文共 990 字,大约阅读时间需要 3 分钟。

原文:

        数据库环境: Sql Server 2005

        查询语句类似:

       SELECT TOP XX * FROM tbl ...

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

        SELECT TOP @queryCount * FROM tbl

         可编译时报错:

消息 102,级别 15,状态 1,第 3 行

附近有语法错误。

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

        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 ;GODECLARE @p AS intSET @p='10'SELECT TOP(@p)*FROM HumanResources.Employee;GO

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

        感叹:

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

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

 

转载地址:http://qwoao.baihongyu.com/

你可能感兴趣的文章
Java递归拷贝文件夹
查看>>
从Java到C++——从union到VARIANT与CComVariant的深层剖析
查看>>
java使用jeids实现redis2.6的list操作(3)
查看>>
Android简单框架会用到的基类(2)
查看>>
flask sqlalchemy多个外键引用同张表报错sqlalchemy.exc.AmbiguousForeignKeysError
查看>>
在 CentOS6 上安装 Python 2 & 3
查看>>
svnserver配置文件详解
查看>>
Mybatis之动态SQL语句
查看>>
文件上传利器SWFUpload使用指南
查看>>
jdbc性能优化
查看>>
linux下activemq异常退出,重启失败
查看>>
WordPress条件判断标签(Conditional Tags)手册
查看>>
【05】中级:翻页采集(以微博博主主页采集为例)
查看>>
iOS不规则按钮的响应事件的处理方法
查看>>
Linux下密码过期时间设置
查看>>
神经质人格
查看>>
iOS 画圆形
查看>>
OSSEC编写DECODE
查看>>
Hibernate 通用底层Dao
查看>>
JAVA 常用的工具类总结
查看>>