2010-12-10 14 views
13

z aplikacji klienckiej I tyipically zrobić:Jak napisać sparametryzowane zapytanie w studio zarządzania?

select * from table where Name = :Parameter 

a następnie przed wykonaniem kwerendy zrobić

:Parameter = 'John' 

Parametry te nie są Szukaj & Wymień ale rzeczywiste parametry przekazywane do serwera. Ponieważ muszę szczegółowo przetestować niektóre z tych zapytań, w jaki sposób mogę napisać zapytanie w studio zarządzania?

Chcę napisać zapytanie z parametrami i podać wartość parametru. Jak to zrobić?

Aktualizacja:

Aby usunąć niejasności tu dodać informacje lepiej wyrazić myseld.

kiedy wykonać normalne zapytanie widzę w SQL Server Profiler

select * from table where Name = 'John' 

podczas gdy wykonanie sparametryzowanego zapytanie widzę to:

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

To dlatego mówię, że nie jest szukaj i zamień.

+0

Aktualizacja przedstawia dokładnie to, co pokazałem ci w mojej odpowiedzi ... –

+0

OK, masz rację. Tak więc otrzymałem informację, że gdy aplikacja kliencka używa parametrów, to w jakiś sposób deklasuje zmienne za pomocą DELCARE. Bardzo interesujące, pomaga to w rozwiązaniu problemu, który mam. – LaBracca

+0

Aby wyjaśnić, dlaczego zadałem to pytanie, przekierowuję do ostatniego pytania: http://stackoverflow.com/questions/4408551/select-statment-performance-degradation-when-using-distinct-with-parameters – LaBracca

Odpowiedz

21

Jak o czymś takim

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

SELECT * 
FROM Table 
WHERE Name = @Parameter 
+0

Nie ma tego "Serach and replace", w ten sposób nie mówię sql_server, że jest to parametr. – LaBracca

+0

Proszę zobaczyć moją aktualizację pytania, aby uzyskać co mam na myśli. – LaBracca

0

z dodatkiem do Adriaan Stander odpowiadać w kodzie IE na przykład, jeśli były przy użyciu C# zapewnienia zdać @parameter poprzez enkapsulacji
przykład kodu poniżej, aby studiować:

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

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


       conn.Close(); 

      } 

Oczywiście powyższy kod nie jest kompletny, ale daje pomysł.

Powiązane problemy