2009-08-14 7 views
43

내 SQL 문에서 TOP 값을 매개 변수화하려고합니다.C# SQL 매개 변수로 위로

SELECT TOP @topparam * from table1 

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

이것은 작동하지 않습니다. 누구든지 어떤 제안이 있습니까?
명확히하기 위해 저장 프로 시저를 사용하고 싶지 않습니다.

답변

64

SQL Server 2005 and above, 당신은이 작업을 수행 할 수 있습니다

SELECT TOP (@topparam) * from table1 
+0

이것은 내 대답을 이끌었다. 값을 varchar로 전달하고 int로 전환하여 고정했습니다. 모두에게 감사드립니다. – muhan

+0

이것은 정확히 제가 찾은 것입니다, 감사합니다! – ActionOwl

+0

@topparam을 TOP 값을 무시하고 모든 행을 반환하는 값으로 설정하는 방법이 있습니까? –

0

당신은 인라인 쿼리를 작성할 수 있습니다

EXEC를

가 int로서 구문 분석 '... * FROM'+ @topparam + 'TOP SELECT'하고는 SQL 주입 공격을 방지 할 수 있습니다.

8

당신은이 코드는 예를 들어 8분의 2,005에서 잘 작동 적어도 SQL 서버 2005에 있어야합니다 ...

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

하는 경우 당신은 SQL 서버 2000을 가지고 있는데,이 시도해보십시오 ...

CREATE PROCEDURE TopNRecords 
@intTop INTEGER 
AS 
SET ROWCOUNT @intTop 

SELECT * FROM SomeTable 

SET ROWCOUNT 0 
GO 
관련 문제