2012-05-01 4 views
0

내 asp.net 프로젝트에서 C#의 서버 측 필터 기능이 SQL WHERE 절을 작성한 다음 SQL 저장 프로 시저로 전달하는 경우가 있습니다프로그래밍 방식으로 WHERE 절을 작성한 다음 매개 변수로 SQL에 전달

필터는 "WHERE Qty < 5 AND Price > 10"과 같은 값의 문자열 변수를 생성합니다.

저장 프로 시저의 관련 부분은 같은 것입니다 : 당신이 볼 수 있듯이, 우리는에 의해 생성 된 where 절을 포함하는 변수 전달에 내장 된 문자열상의 EXEC 명령을 할 필요가

Exec (‘ 
    Select Name, Location 
    From Users 
    + ‘@passedInWhereClause’ 
‘) 

서버 측 C# 코드. 나는 EXEC을 없애고 EXEC으로 싸여있는 거대한 문자열 대신에 SQL 코드를 좀 더 전문적으로 보이게 만들고 싶습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?

+7

SQL 인젝션 용 수 ... –

+0

너의 등 (http://stackoverflow.com/questions/6945461/t-sql-dynamic-where-condition)이 다른 문제이다]. 짧은 대답은 아니오입니다. – Steve

+1

대신 EF 또는 Linq-To-SQL을 사용하여 이것을 고려해 보셨습니까? – KingCronus

답변

1

당신은 선택적 매개 변수를 고려해야한다, 예

WHERE (@Type = NULL OR @Type = '' OR @Type = Type) 

이것은 당신이 어디에 절을 무시하도록 SP에 NULL 또는 빈을 전달할 수 있습니다, 또는 당신은 조항이 적용 위치를 가지고 값을 전달합니다.

+0

우리는 실제로 코드의 다른 곳에서 선택적 매개 변수를 수행합니다. 이것은 여기서도 효과가 있습니다. 감사! – user1368731