declare @top int
set @top = 5
select top @top * from tablename
Run Code Online (Sandbox Code Playgroud)
可能吗?
或任何想法这样的逻辑(我不想使用动态查询)?
使用vs2008查询构建器,我正在尝试进行查询以获取" TOP"命令的参数,然后我遇到错误"顶层表达式中的错误"
作品:
SELECT TOP 5 * FROM dbo.SomeTable
WHERE SomeColumn = SomeValue
Run Code Online (Sandbox Code Playgroud)
不起作用:
SELECT TOP @param1 * FROM dbo.SomeTable
WHERE SomeColumn = SomeValue
Run Code Online (Sandbox Code Playgroud)
alt text http://www.freeimagehosting.net/uploads/f9b9354577.jpg
我的存储过程中的查询看起来像:
select top 9 from my_table;
Run Code Online (Sandbox Code Playgroud)
我想编辑存储过程以从参数动态生成限制,但是,这似乎不起作用:
ALTER PROCEDURE [dbo].[my_stored_procedure]
@n INT(2)
AS
BEGIN
SELECT TOP @n from my_table;
Run Code Online (Sandbox Code Playgroud)
这可行吗?或者我必须做以下事情:
@n int(2),
@sql varchar(30)
@sql = 'select top ' + @n '* from my table';
exec(@sql);
Run Code Online (Sandbox Code Playgroud)
谢谢.