“@”符号在 SQL 中起什么作用?

我浏览这些问题时注意到了这个:

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

我想知道“@”在顾客身份证前面是什么意思?它仅仅是从被选中的表中引用 customID 的一种方法吗?

165546 次浏览

@ is used as a prefix denoting stored procedure and function parameter names, and also variable names

The @CustID means it's a parameter that you will supply a value for later in your code. This is the best way of protecting against SQL injection. Create your query using parameters, rather than concatenating strings and variables. The database engine puts the parameter value into where the placeholder is, and there is zero chance for SQL injection.

Its a parameter the you need to define. to prevent SQL Injection you should pass all your variables in as parameters.

You may be used to MySQL's syntax: Microsoft SQL @ is the same as the MySQL's ?

What you are talking about is the way a parameterized query is written. '@' just signifies that it is a parameter. You can add the value for that parameter during execution process

eg:
sqlcommand cmd = new sqlcommand(query,connection);
cmd.parameters.add("@custid","1");
sqldatareader dr = cmd.executequery();
publish data where stoloc = 'AB143'
|
[select prtnum where stoloc = @stoloc]

This is how the @ works.

@ followed by a number is the parameters in the order they're listed in a function.