怎样在Sql Server中用存储过程获取前n行的值?其中n的值是由程序传入Sql Server2005数据库中去的。这样的存储过程怎样写,高手指点。

解决方案 »

  1.   

    其实这根本用不着存储过程啊,sql就可以啦!if Object_id('p_','P') is not null
    begin
    drop procedure p_
    end
    gocreate procedure p_
    @n int
    as
    begin
    select top @n * from table
    end
      

  2.   


    @n int
    @sql varchar(50)set @n=5
    set @sql='select top '++' * from tb_tabs'
    exec(sql)
    楼主这样试试,思路是这个样子的,代码不知道能不能执行
    方法应该是没有问题的,我用过了。
    就是先组合一个sql语句,再用exec来执行!
      

  3.   

    这个执行无误!CREATE PROCEDURE dbo.Msg_GetTopCountMsgByCateId
    (
    @CateId int,
    @Count int
    )
    AS
    declare @cun varchar(2000)set @cun='select top '+rtrim(@Count)+' Mid,Title,Uid,EndDate,Clicks from tb_Msgs 
    where CateId='+rtrim(@CateId)+' order by Clicks '
    exec(@cun)
    RETURNGO
      

  4.   


    你试了吗,这样可以吗
    用 Row_Number()函数
      

  5.   


    if Object_id('p_','P') is not null
    begin
        drop procedure p_
    end
    gocreate procedure p_
    @n int
    as
    begin
    declare @sql nvarchar (1000)
    set @sql = 'select top '+cast(@n as nvarchar)+' * from city'
    exec (@sql)
    endexec p_ 2
    go
      

  6.   

    使用top就可以实现获取前几行啦