数据库环境: 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