it-swarm.com.de

Was bewirkt das "@" -Symbol in SQL?

Ich stöberte durch die Fragen und bemerkte Folgendes:

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

Ich habe mich gefragt, was das "@" vor custID macht? Ist es nur eine Möglichkeit, auf die custID aus der ausgewählten Tabelle zu verweisen?

63
Levi

Die @CustID bedeutet, dass es sich um einen Parameter handelt, für den Sie später im Code einen Wert angeben. Dies ist der beste Schutz vor der SQL-Injection. Erstellen Sie Ihre Abfrage mithilfe von Parametern, anstatt Zeichenfolgen und Variablen zu verketten. Das Datenbankmodul setzt den Parameterwert in den Platz, in dem sich der Platzhalter befindet. Es besteht keine Chance für die SQL-Injektion.

49
Kibbee

@ wird als Präfix für die Namen von gespeicherten Prozeduren und Funktionsparametern sowie für Variablennamen verwendet

28
Steven A. Lowe

Es ist ein Parameter, den Sie definieren müssen. Um SQL Injection zu verhindern, sollten Sie alle Ihre Variablen als Parameter übergeben.

2
bendewey

Sie können an die Syntax von MySQL gewöhnt sein: Microsoft SQL @ ist identisch mit dem MySQL ?

2
ine

Worüber Sie sprechen, ist die Art, wie eine parametrisierte Abfrage geschrieben wird. '@' bedeutet nur, dass es sich um einen Parameter handelt. Sie können den Wert für diesen Parameter während des Ausführungsprozesses hinzufügen

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

@, gefolgt von einer Zahl, sind die Parameter in der Reihenfolge, in der sie in einer Funktion aufgeführt sind.

0
ZeroPhase
publish data where stoloc = 'AB143' 
|
[select prtnum where stoloc = @stoloc]

So funktioniert der @

0
marc