嘗試在我的sql語句中參數化TOP的值。C#SQL Top作爲參數
SELECT TOP @topparam * from table1
command.Parameters.Add("@topparam",SqlDbType.VarChar, 10).Value = somevalue.ToString();
這似乎並不奏效。任何人有任何建議?
只是爲了澄清,我不想使用存儲過程。
嘗試在我的sql語句中參數化TOP的值。C#SQL Top作爲參數
SELECT TOP @topparam * from table1
command.Parameters.Add("@topparam",SqlDbType.VarChar, 10).Value = somevalue.ToString();
這似乎並不奏效。任何人有任何建議?
只是爲了澄清,我不想使用存儲過程。
在SQL Server 2005 and above,你可以這樣做:
SELECT TOP (@topparam) * from table1
你可以寫一聯查詢:
EXEC 'SELECT TOP' + @topparam + '* FROM ...'
解析它作爲一個int,這將防止SQL注入攻擊。
你需要有至少SQL Server 2005的這段代碼在2005/8例如正常工作......
DECLARE @iNum INT
SET @iNum = 10
SELECT TOP (@iNum) TableColumnID
FROM TableName
如果你有SQL Server 2000,試試這個...
CREATE PROCEDURE TopNRecords
@intTop INTEGER
AS
SET ROWCOUNT @intTop
SELECT * FROM SomeTable
SET ROWCOUNT 0
GO
這使我回答了我的答案。我通過varchar傳遞值,切換到int修復它。謝謝大家。 – muhan 2009-08-14 01:00:45
這正是我所期待的,謝謝! – ActionOwl 2011-02-09 15:29:32
有沒有辦法將@topparam設置爲一個值,這意味着它忽略TOP並返回所有行? – 2017-10-04 15:09:20