2009-08-14 13 views
43

sql ifademde TOP değerini parametrelendirmeye çalışıyorum.C# SQL Üst parametre olarak

SELECT TOP @topparam * from table1 

command.Parameters.Add("@topparam",SqlDbType.VarChar, 10).Value = somevalue.ToString(); 

Bu işe yaramıyor gibi görünüyor. Herhangi birinin önerisi varmı?
Sadece açıklığa kavuşturmak için saklı yordamları kullanmak istemiyorum.

cevap

64

SQL Server 2005 and above olarak, bunu yapabilirsiniz:

SELECT TOP (@topparam) * from table1 
+0

Bu bana yanıtımı verdi. Varchar olarak değeri geçiyordum, int olarak değiştirdim. Hepinize teşekkürler. – muhan

+0

Tam olarak aradığım şey bu, teşekkürler! – ActionOwl

+0

@topparam değerini, TOP değerini yok sayıp tüm satırları döndürdüğü anlamına gelen bir değere ayarlamanın bir yolu var mı? –

0

Bir satır içi sorgusu yazabilirsiniz:

EXEC

int olarak Ayrıştırma '... DAN *' + @topparam + 'ÜST SEÇ' ve SQL enjeksiyon saldırısını engelleyecektir.

8

Bu kod, örneğin 2005/8 yılında çalışıyor azından SQL Server 2005 de olması gerekir ...

DECLARE @iNum INT 
SET @iNum = 10 
SELECT TOP (@iNum) TableColumnID 
FROM TableName 

ise SQL Server 2000 var, bunu bir deneyin ...

CREATE PROCEDURE TopNRecords 
@intTop INTEGER 
AS 
SET ROWCOUNT @intTop 

SELECT * FROM SomeTable 

SET ROWCOUNT 0 
GO 
İlgili konular