web-dev-qa-db-fra.com

Comment écrire une requête paramétrée dans le studio de gestion?

À partir d'une application client, je fais généralement:

select * from table where Name = :Parameter

et puis avant d'exécuter la requête que je fais

:Parameter = 'John'

Ces paramètres ne sont pas un Search & Replace mais les paramètres réels transmis au serveur. Depuis que je dois tester certaines de ces questions en détail, comment puis-je écrire la requête en studio de gestion?

Je veux écrire la requête avec des paramètres et donner une valeur au paramètre. Comment cela peut-il être fait?

Mettre à jour:

Pour supprimer la confusion ici, j'ajoute des informations pour mieux exprimer myseld.

quand j'exécute une requête normale que je vois dans le profileur de serveur SQL

select * from table where Name = 'John'

alors que quand j'exécute une requête paramétrée, je vois ceci:

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

C'est pourquoi je dis que ce n'est pas une recherche et remplacement.

15
LaBracca

Que diriez-vous de quelque chose comme

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

SELECT *
FROM Table
WHERE Name = @Parameter
26
Adriaan Stander

On dirait que vous avez répondu à votre propre question lorsque vous l'avez mis à jour.

Réécriture ici pour les futurs visiteurs qui peuvent être confus comme moi. Voici comment vous écrivez une requête paramétrée dans SSMS. Cela est utile si vous souhaitez analyser le plan d'exécution d'une requête paramétrée exécutée par votre code.

EXEC sp_executesql N'

SELECT * FROM table_t 
WHERE first_name = @parameter

', N'@parameter VARCHAR(8000)', 'John'
0
Dennis T

En plus de la réponse Adriaan Stander dans votre code, par exemple si vous utilisiez C #, assurez-vous de passer le paramètre @ en encapsulant
exemple de code ci-dessous pour vous permettre d’étudier:

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

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


                conn.Close();

            }

Bien sûr, ce qui précède n’est pas un code complet, mais vous donnerez une idée. 

0
Wazzie