2010-12-10 7 views
13

나는 tyipically 수행관리 스튜디오에서 매개 변수화 된 쿼리를 작성하는 방법은 무엇입니까? 클라이언트 응용 프로그램에서

select * from table where Name = :Parameter 

는 다음 쿼리를 실행하기 전에 나는

:Parameter = 'John' 

을 이러한 매개 변수는 검색 & 교체 그러나 실제 매개 변수가 서버로 전달되지 않습니다. 이러한 쿼리 중 일부를 자세하게 테스트해야하기 때문에 어떻게 관리 스튜디오에서 쿼리를 작성할 수 있습니까?

매개 변수와 함께 쿼리를 작성하고 매개 변수에 값을 제공하려고합니다. 어떻게 할 수 있습니까?

업데이트 :

내가 더 잘 표현 myseld에 정보를 추가 여기 혼란을 제거하십시오. 나는 그것이 아니라고 왜

exec sp_executesql N'select * from table 
where Name = @P1',N'@P1 varchar(8000)','John' 

이것은 : 내가 SQL 서버 프로파일에서 볼 정상적인 쿼리를 실행할 때

select * from table where Name = 'John' 

나는 내가 이것을 참조하십시오 매개 변수화 쿼리를 실행하는 동안 때 검색하고 바꿉니다.

+0

업데이트는 내 답변에 표시 한 내용과 거의 같습니다 ... –

+0

맞습니다. 따라서 클라이언트 응용 프로그램에서 매개 변수를 사용하면 어떻게 든 DELCARE로 변수를 선언 할 수 있습니다. 매우 흥미로운, 이것은 내가 가진 문제를 해결하는 데 도움이됩니다. – LaBracca

+0

내가 왜이 질문을했는지 설명하기 위해 마지막 질문으로 리디렉션합니다. http://stackoverflow.com/questions/4408551/select-statment-performance-degradation-when-using-distinct-with-parameters – LaBracca

답변

21

당신은 C#을 사용한다면 아드리안 스탠에 추가로

DECLARE @Parameter VARCHAR(20) 
SET @Parameter = 'John' 

SELECT * 
FROM Table 
WHERE Name = @Parameter 
+0

아니요 "Serach and replace", 이런 식으로 sql_server에게 매개 변수라고 말하지 않습니다. – LaBracca

+0

내 업데이 트를 참조하십시오 그래서 yuo 무슨 뜻인지. – LaBracca

0

같은 대해 당신이 공부를 할 수 아래
코드 예제를 캡슐화를 통해 @parameter을 통과 할 수 있도록 예를 들어 코드의 예에 응답하는 방법 :

  using (SqlConnection conn = new SqlConnection(conString)) 
      { 
       conn.Open(); 

       SqlCommand cmd = new SqlCommand(userSql, conn); 
       cmd.Parameters.AddWithValue("@parameter", parameter); 


       conn.Close(); 

      } 

물론 위의 코드는 완전한 것이 아니지만 아이디어를 제공 할 것입니다.

관련 문제