我写了一个存储过程,要返回记录集中的前x行的数据,例如:select to @x ID,Name from table1
我想把@x作为一个参数,也就是输入一个int数字作为参数,返回想获取的前多少行。直接用是不行的,请问有没有什么办法?  

解决方案 »

  1.   

    当然可以!
    select top @x ID,Name from table1
      

  2.   

    string sql = "select top {0}, ID,Name from table1";然后用String.Format( sql, 5 )
      

  3.   

    trycreate proc YourSelect
    @n int
    as
    begin
      SET ROWCOUNT @n
      select ID,Name  from  table1  
    end
      

  4.   

    select top @x ID,Name from table1
    这样不行的,不信你可以试一试!!
      

  5.   


    在存储过程中这样使用
      SET rowcount @x
      select ID,Name  from  table1  
      

  6.   

    gOODiDEA(无语) 你说的这个能不能说详细一点,我不太明白
    string sql = "select top {0}, ID,Name from table1";然后用String.Format( sql, 5 )
      

  7.   

    DECLARE  @N INT
    SET @N=10             ----這一句可以設定你的條數
    SET rowcount @NSELECT          *
    FROM             GOOD
      

  8.   

    如果使用存储过程应这样写:
    CREATE PROC SEL
    @x int
    AS
    DECLARE @strSql nchar(2048)
    SET @strSql='SELECT TOP ' + @int + ' FROM YourTable'
    EXEC sp_executesql @strSql
    GO
      

  9.   

    不好意思,简单语句竟写错了
    CREATE PROC SEL
    @x int
    AS
    DECLARE @strSql nchar(2048)
    SET @strSql=N'SELECT TOP ' + CONVERT(nchar(5), @x) + N' * FROM YourTable'
    EXEC sp_executesql @strSql
    GO
      

  10.   

    IamBM(商用机器)你说的似乎不行啊
    SET @strSql='SELECT TOP ' + @int + ' FROM YourTable'
    中的@int是个int类型的,无法和前后的字符串相加啊。