SQL中的"@"符号有什么作用?

Lev*_*evi 69 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
Run Code Online (Sandbox Code Playgroud)

我想知道"@"在custID面前做了什么?它只是一种从所选表中引用custID的方法吗?

Kib*_*bee 53

@CustID表示它是一个参数,您将在以后的代码中提供值.这是防止SQL注入的最佳方法.使用参数创建查询,而不是连接字符串和变量.数据库引擎将参数值放入占位符所在的位置,并且SQL注入的可能性为零.

  • @Mark:你能解释一下这是一个有效的SQL注入尝试吗?据我所知,如果发送到SqlServer会出错. (9认同)
  • 不存在SQL注入的原因是`@CustID`被替换为字符串.当该数据库收到其中一个变量时,它知道不会为变量内部的任何内容转义该变量. (4认同)

Ste*_*owe 29

@用作表示存储过程和函数参数名称的前缀,以及变量名称