create proc up_proc1
@X int,
@Y int
as
declare @SQL varchar(1000)
set @SQL = 'SELECT TOP '
+cast(@X as varchar)
+' * FROM(SELECT TOP '
+cast(@Y as varchar)
+' * FROM tables ORDER BY ID DESC) DERIVEDTBL ORDER BY ID ASC'
exec (@SQL)

解决方案 »

  1.   

    这样不能返回值的!!也就是记录
    建议你看看table类型的用法,通过sp_executesql  函数返回table类型变量,然后select 变量
      

  2.   

    可以这样实现
    use northwind
    go
    create proc up_proc1
    @X int,
    @Y int
    as
    declare @SQL varchar(1000)
    set @SQL = 'SELECT TOP '
    +cast(@X as varchar)
    +' * FROM(SELECT TOP '
    +cast(@Y as varchar)
    +' * FROM orders ORDER BY orderID DESC) DERIVEDTBL ORDER BY orderID ASC'
    exec (@SQL)
    goSELECT *
    FROM OPENROWSET('SQLOLEDB','waggie';'sa';'',
       'exec Northwind.dbo.up_proc1 11,33')