2010-12-10 11 views
13

Von einer Client-Anwendung kann ich tyipically:Wie schreibe ich eine parametrisierte Abfrage in Management Studio?

select * from table where Name = :Parameter 

und dann vor dem Ausführen der Abfrage ich

:Parameter = 'John' 

Diese Parameter ersetzen nicht eine Suche & sind aber reale Parameter an den Server übergeben. Da ich einige dieser Abfragen im Detail testen muss, wie kann ich die Abfrage in Management Studio schreiben?

Ich möchte die Abfrage mit Parametern schreiben und geben Sie einen Wert für den Parameter. Wie kann das gemacht werden?

Update:

Verwirrung entfernen hier füge ich Informationen zu einer besseren Express myseld.

wenn ich eine normale Abfrage, die ich in SQL Server Profiler sehe ausführen

select * from table where Name = 'John' 

während, wenn ich ausführen, um eine parametrisierte Abfrage, die ich sehe:

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

Aus diesem Grunde sage ich es nicht ist suchen und ersetzen.

+0

Das Update macht ziemlich genau das, was ich Ihnen in meiner Antwort gezeigt habe ... –

+0

Ok, Sie haben Recht. Also, was ich bekam, ist, dass, wenn eine Client-Anwendung Parameter irgendwie verwendet, dekaliert Variablen mit DELCARE. Sehr interessant, das hilft bei der Lösung eines Problems, das ich habe. – LaBracca

+0

Um Ihnen zu erklären, warum ich diese Frage gestellt habe, leite ich Sie zu meiner letzten Frage um: http://stackoverflow.com/questions/4408551/select-statement-performance-degradation-when-using-distinct-with-parameters – LaBracca

Antwort

21

Wie wäre es so etwas wie

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

SELECT * 
FROM Table 
WHERE Name = @Parameter 
+0

Nein, das ist "Serach and Replace", auf diese Weise sage ich sql_server nicht, dass es sich um einen Parameter handelt. – LaBracca

+0

Bitte lesen Sie mein Update zu der Frage, damit Sie verstehen, was ich meine. – LaBracca

0

Mit Neben Adriaan Stander im Code also beispielsweise antworten, wenn Sie C# sicherzustellen, wurden unter Verwendung übergeben Sie die @parameter über Einkapseln
Codebeispiel unten für Sie zu studieren:

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

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


       conn.Close(); 

      } 

Natürlich ist der obige Code nicht vollständig, aber Sie werden eine Idee geben.

Verwandte Themen