使用動態語句,如下
Declare @I Int
Declare @S Varchar(1000)
Set @I=1
Set @S='Select TOP '+Rtrim(@I)+' * From TableName Order By ID'
EXEC(@S)

解决方案 »

  1.   

    需要返回值的话,需要用sp_executesql
      

  2.   

    SELECT TOP @PDay @TotalOut=(sum(POut)) FROM basDetail 不管@PDay 是幾,@TotalOut也只得到一個值.WHERE PID=@PID BY PSysDate DESC這裡掉了一個Order
      

  3.   

    需要返回值參考下面語句。--建立測試環境
    Create Table TEST(ID Int,Name Varchar(10))
    Insert TEST Select 1,'aa'
    Union All Select 2,'bb'
    Union All Select 3,'cc'
    GO
    --測試
    Declare @I Int
    Declare @ID Int
    Declare @S Nvarchar(1000)
    Set @I=1
    Set @S=N'Select TOP '+Rtrim(@I)+'@ID=ID  From TEST Order By ID Desc'
    EXEC sp_executesql @S, N'@ID Int output', @ID output
    Select @ID
    GO
    --刪除測試環境
    Drop Table TEST
    GO
    --結果
    /*
    3
    */