87 votes

Que fait le symbole "@" dans SQL ?

Je parcourais les questions et j'ai remarqué ceci :

SELECT prodid, issue
FROM Sales 
WHERE custid = @custid 
AND datesold = SELECT MAX(datesold) 
             FROM Sales s 
             WHERE s.prodid = Sales.prodid
                  AND s.issue = Sales.issue
                  AND s.custid = @custid

Je me demandais ce que le "@" fait devant custID ? Est-ce juste une façon de référencer le custID de la table sélectionnée ?

69voto

Kibbee Points 36474

Le @CustID signifie qu'il s'agit d'un paramètre pour lequel vous fournirez une valeur plus tard dans votre code. C'est le meilleur moyen de se protéger contre l'injection SQL. Créez votre requête en utilisant des paramètres, plutôt que de concaténer des chaînes et des variables. Le moteur de base de données place la valeur du paramètre à l'endroit où se trouve l'espace réservé, et il n'y a aucune chance d'injection SQL.

34voto

Steven A. Lowe Points 40596

@ est utilisé comme préfixe désignant les noms des paramètres de procédure et de fonction stockés, ainsi que les noms des variables

4voto

ine Points 10065

Vous pouvez être habitué à la syntaxe de MySQL : Microsoft SQL @ est le même que celui de MySQL ?

3voto

bendewey Points 25437

C'est un paramètre que vous devez définir. Pour empêcher l'injection SQL, vous devez passer toutes vos variables en tant que paramètres.

2voto

Samiksha Points 2182

Ce dont vous parlez est la façon dont une requête paramétrée est écrite. '@' signifie simplement qu'il s'agit d'un paramètre. Vous pouvez ajouter la valeur de ce paramètre pendant le processus d'exécution

eg:
sqlcommand cmd = new sqlcommand(query,connection);
cmd.parameters.add("@custid","1");
sqldatareader dr = cmd.executequery();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X